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.
Files changed (260) hide show
  1. package/index.js +23 -8
  2. package/package.json +4 -4
  3. package/support/composer.json +1 -1
  4. package/support/composer.lock +93 -178
  5. package/support/vendor/autoload.php +15 -0
  6. package/support/vendor/bin/phug +119 -0
  7. package/support/vendor/bin/var-dump-server +119 -0
  8. package/support/vendor/composer/ClassLoader.php +166 -32
  9. package/support/vendor/composer/InstalledVersions.php +387 -329
  10. package/support/vendor/composer/autoload_classmap.php +1 -5
  11. package/support/vendor/composer/autoload_files.php +2 -3
  12. package/support/vendor/composer/autoload_namespaces.php +1 -1
  13. package/support/vendor/composer/autoload_psr4.php +3 -4
  14. package/support/vendor/composer/autoload_real.php +12 -37
  15. package/support/vendor/composer/autoload_static.php +6 -17
  16. package/support/vendor/composer/installed.json +97 -184
  17. package/support/vendor/composer/installed.php +129 -151
  18. package/support/vendor/composer/platform_check.php +16 -4
  19. package/support/vendor/phug/phug/.github/workflows/coverage.yml +71 -0
  20. package/support/vendor/phug/phug/.github/workflows/multi-tester.yml +46 -0
  21. package/support/vendor/phug/phug/.github/workflows/split.yml +41 -0
  22. package/support/vendor/phug/phug/.github/workflows/style.yml +48 -0
  23. package/support/vendor/phug/phug/.github/workflows/tests.yml +49 -0
  24. package/support/vendor/phug/phug/.multi-tester.yml +42 -10
  25. package/support/vendor/phug/phug/composer.json +25 -16
  26. package/support/vendor/phug/phug/phpcs.xml +4 -0
  27. package/support/vendor/phug/phug/phpunit.xml +2 -0
  28. package/support/vendor/phug/phug/phug +1 -1
  29. package/support/vendor/phug/phug/release.php +8 -0
  30. package/support/vendor/phug/phug/src/Phug/Ast/Ast/Node.php +7 -1
  31. package/support/vendor/phug/phug/src/Phug/Ast/composer.json +1 -2
  32. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/Element/BlockElement.php +1 -1
  33. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AssignmentNodeCompiler.php +9 -1
  34. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AttributeNodeCompiler.php +1 -0
  35. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ElementNodeCompiler.php +6 -0
  36. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ImportNodeCompiler.php +4 -4
  37. package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompilerInterface.php +1 -1
  38. package/support/vendor/phug/phug/src/Phug/Compiler/composer.json +5 -2
  39. package/support/vendor/phug/phug/src/Phug/DependencyInjection/DependencyInjection.php +1 -1
  40. package/support/vendor/phug/phug/src/Phug/DependencyInjection/composer.json +1 -2
  41. package/support/vendor/phug/phug/src/Phug/Event/Event/ListenerQueue.php +3 -0
  42. package/support/vendor/phug/phug/src/Phug/Event/EventManagerTrait.php +1 -1
  43. package/support/vendor/phug/phug/src/Phug/Event/composer.json +1 -2
  44. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AbstractFormat.php +15 -12
  45. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AssignmentContainerInterface.php +2 -1
  46. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractAssignmentContainerElement.php +11 -1
  47. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractMarkupElement.php +1 -1
  48. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AssignmentElement.php +9 -4
  49. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AttributeElement.php +4 -1
  50. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/CodeElement.php +2 -2
  51. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MarkupElement.php +10 -8
  52. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinCallElement.php +2 -1
  53. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinElement.php +2 -1
  54. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Format/XmlFormat.php +213 -20
  55. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/AssignmentHelpersTrait.php +7 -4
  56. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/HandleVariable.php +4 -4
  57. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/MagicAccessorTrait.php +1 -7
  58. package/support/vendor/phug/phug/src/Phug/Formatter/Formatter.php +1 -1
  59. package/support/vendor/phug/phug/src/Phug/Formatter/composer.json +1 -2
  60. package/support/vendor/phug/phug/src/Phug/Invoker/Invoker.php +1 -1
  61. package/support/vendor/phug/phug/src/Phug/Invoker/composer.json +5 -2
  62. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Partial/IndentStyleTrait.php +5 -5
  63. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AssignmentScanner.php +8 -2
  64. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AttributeScanner.php +23 -11
  65. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/ConditionalScanner.php +1 -1
  66. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/FilterScanner.php +6 -10
  67. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/IndentationScanner.php +1 -1
  68. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/KeywordScanner.php +1 -1
  69. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/MultilineScanner.php +6 -12
  70. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/Partial/TrailingOutdentHandlerTrait.php +26 -0
  71. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/TextScanner.php +3 -3
  72. package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/State.php +9 -9
  73. package/support/vendor/phug/phug/src/Phug/Lexer/composer.json +1 -2
  74. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Event/NodeEvent.php +3 -2
  75. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AssignmentNode.php +5 -1
  76. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AttributeNode.php +4 -1
  77. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/ElementNode.php +5 -1
  78. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/FilterNode.php +2 -1
  79. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinCallNode.php +5 -1
  80. package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinNode.php +5 -1
  81. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AbstractTokenHandler.php +87 -0
  82. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AssignmentTokenHandler.php +6 -21
  83. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeEndTokenHandler.php +5 -10
  84. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeStartTokenHandler.php +7 -23
  85. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeTokenHandler.php +21 -19
  86. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AutoCloseTokenHandler.php +5 -17
  87. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/BlockTokenHandler.php +4 -10
  88. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CaseTokenHandler.php +4 -10
  89. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ClassTokenHandler.php +7 -34
  90. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CodeTokenHandler.php +4 -10
  91. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CommentTokenHandler.php +4 -10
  92. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ConditionalTokenHandler.php +4 -10
  93. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoTokenHandler.php +4 -10
  94. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoctypeTokenHandler.php +4 -10
  95. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/EachTokenHandler.php +4 -10
  96. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpansionTokenHandler.php +5 -11
  97. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpressionTokenHandler.php +4 -10
  98. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/FilterTokenHandler.php +4 -10
  99. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ForTokenHandler.php +4 -10
  100. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IdTokenHandler.php +7 -33
  101. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ImportTokenHandler.php +14 -20
  102. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IndentTokenHandler.php +4 -10
  103. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationEndTokenHandler.php +4 -10
  104. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationStartTokenHandler.php +29 -30
  105. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/KeywordTokenHandler.php +4 -10
  106. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinCallTokenHandler.php +4 -10
  107. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinTokenHandler.php +4 -10
  108. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/NewLineTokenHandler.php +4 -10
  109. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/OutdentTokenHandler.php +4 -10
  110. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/Partial/StaticAttributeTrait.php +36 -0
  111. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationEndTokenHandler.php +4 -10
  112. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationStartTokenHandler.php +7 -10
  113. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagTokenHandler.php +6 -21
  114. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TextTokenHandler.php +4 -10
  115. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/VariableTokenHandler.php +4 -10
  116. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhenTokenHandler.php +4 -10
  117. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhileTokenHandler.php +4 -10
  118. package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/YieldTokenHandler.php +4 -10
  119. package/support/vendor/phug/phug/src/Phug/Parser/Parser.php +1 -1
  120. package/support/vendor/phug/phug/src/Phug/Parser/composer.json +1 -2
  121. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Cli.php +5 -5
  122. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/ExtensionsTrait.php +1 -1
  123. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/FacadeOptionsTrait.php +1 -1
  124. package/support/vendor/phug/phug/src/Phug/Phug/Phug/Phug.php +14 -5
  125. package/support/vendor/phug/phug/src/Phug/Phug/composer.json +5 -2
  126. package/support/vendor/phug/phug/src/Phug/Reader/Reader.php +9 -9
  127. package/support/vendor/phug/phug/src/Phug/Reader/composer.json +4 -0
  128. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/FileAdapter.php +21 -4
  129. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/Stream/Template.php +5 -0
  130. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/StreamAdapter.php +1 -1
  131. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/CacheInterface.php +1 -1
  132. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/AdapterTrait.php +1 -1
  133. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/Debug/DebuggerTrait.php +56 -10
  134. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/RendererOptionsTrait.php +1 -1
  135. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/Dump.php +1 -1
  136. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/LinkDump.php +2 -2
  137. package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/ProfilerModule.php +1 -1
  138. package/support/vendor/phug/phug/src/Phug/Renderer/composer.json +7 -3
  139. package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseTyped.php +67 -0
  140. package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseUntyped.php +67 -0
  141. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesInterface.php +16 -0
  142. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesOrderInterface.php +17 -0
  143. package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesStorage.php +44 -0
  144. package/support/vendor/phug/phug/src/Phug/Util/Util/Collection.php +2 -0
  145. package/support/vendor/phug/phug/src/Phug/Util/Util/OrderableInterface.php +22 -0
  146. package/support/vendor/phug/phug/src/Phug/Util/Util/OrderedValue.php +25 -0
  147. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributeTrait.php +2 -1
  148. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributesOrderTrait.php +19 -0
  149. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ModuleContainerTrait.php +3 -3
  150. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OptionTrait.php +1 -1
  151. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OrderTrait.php +27 -0
  152. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/StaticMemberTrait.php +1 -1
  153. package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ValueTrait.php +5 -3
  154. package/support/vendor/phug/phug/src/Phug/Util/Util/SandBox.php +1 -0
  155. package/support/vendor/phug/phug/src/Phug/Util/Util/TestCase.php +47 -4
  156. package/support/vendor/phug/phug/src/Phug/Util/composer.json +5 -6
  157. package/support/vendor/symfony/deprecation-contracts/CHANGELOG.md +5 -0
  158. package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE +1 -1
  159. package/support/vendor/symfony/deprecation-contracts/README.md +26 -0
  160. package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/composer.json +9 -9
  161. package/support/vendor/symfony/deprecation-contracts/function.php +27 -0
  162. package/support/vendor/symfony/polyfill-mbstring/LICENSE +1 -1
  163. package/support/vendor/symfony/polyfill-mbstring/Mbstring.php +256 -57
  164. package/support/vendor/symfony/polyfill-mbstring/README.md +1 -1
  165. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  166. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1 -1
  167. package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +102 -27
  168. package/support/vendor/symfony/polyfill-mbstring/bootstrap.php +33 -8
  169. package/support/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
  170. package/support/vendor/symfony/polyfill-mbstring/composer.json +5 -4
  171. package/support/vendor/symfony/var-dumper/CHANGELOG.md +63 -0
  172. package/support/vendor/symfony/var-dumper/Caster/AddressInfoCaster.php +82 -0
  173. package/support/vendor/symfony/var-dumper/Caster/AmqpCaster.php +12 -10
  174. package/support/vendor/symfony/var-dumper/Caster/ArgsStub.php +6 -7
  175. package/support/vendor/symfony/var-dumper/Caster/Caster.php +59 -31
  176. package/support/vendor/symfony/var-dumper/Caster/ClassStub.php +7 -9
  177. package/support/vendor/symfony/var-dumper/Caster/ConstStub.php +20 -4
  178. package/support/vendor/symfony/var-dumper/Caster/CurlCaster.php +31 -0
  179. package/support/vendor/symfony/var-dumper/Caster/CutArrayStub.php +1 -1
  180. package/support/vendor/symfony/var-dumper/Caster/CutStub.php +2 -2
  181. package/support/vendor/symfony/var-dumper/Caster/DOMCaster.php +61 -156
  182. package/support/vendor/symfony/var-dumper/Caster/DateCaster.php +27 -26
  183. package/support/vendor/symfony/var-dumper/Caster/DoctrineCaster.php +6 -4
  184. package/support/vendor/symfony/var-dumper/Caster/DsCaster.php +1 -1
  185. package/support/vendor/symfony/var-dumper/Caster/DsPairStub.php +1 -1
  186. package/support/vendor/symfony/var-dumper/Caster/EnumStub.php +4 -5
  187. package/support/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +64 -49
  188. package/support/vendor/symfony/var-dumper/Caster/FFICaster.php +171 -0
  189. package/support/vendor/symfony/var-dumper/Caster/FiberCaster.php +43 -0
  190. package/support/vendor/symfony/var-dumper/Caster/FrameStub.php +6 -8
  191. package/support/vendor/symfony/var-dumper/Caster/GdCaster.php +30 -0
  192. package/support/vendor/symfony/var-dumper/Caster/GmpCaster.php +4 -2
  193. package/support/vendor/symfony/var-dumper/Caster/ImagineCaster.php +2 -0
  194. package/support/vendor/symfony/var-dumper/Caster/ImgStub.php +1 -1
  195. package/support/vendor/symfony/var-dumper/Caster/IntlCaster.php +10 -8
  196. package/support/vendor/symfony/var-dumper/Caster/LinkStub.php +14 -17
  197. package/support/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +10 -8
  198. package/support/vendor/symfony/var-dumper/Caster/MysqliCaster.php +33 -0
  199. package/support/vendor/symfony/var-dumper/Caster/OpenSSLCaster.php +69 -0
  200. package/support/vendor/symfony/var-dumper/Caster/PdoCaster.php +8 -6
  201. package/support/vendor/symfony/var-dumper/Caster/PgSqlCaster.php +21 -19
  202. package/support/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php +4 -2
  203. package/support/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php +188 -0
  204. package/support/vendor/symfony/var-dumper/Caster/RedisCaster.php +31 -31
  205. package/support/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +100 -44
  206. package/support/vendor/symfony/var-dumper/Caster/ResourceCaster.php +33 -46
  207. package/support/vendor/symfony/var-dumper/Caster/ScalarStub.php +27 -0
  208. package/support/vendor/symfony/var-dumper/Caster/SocketCaster.php +64 -0
  209. package/support/vendor/symfony/var-dumper/Caster/SplCaster.php +57 -44
  210. package/support/vendor/symfony/var-dumper/Caster/SqliteCaster.php +32 -0
  211. package/support/vendor/symfony/var-dumper/Caster/StubCaster.php +15 -5
  212. package/support/vendor/symfony/var-dumper/Caster/SymfonyCaster.php +66 -10
  213. package/support/vendor/symfony/var-dumper/Caster/TraceStub.php +7 -11
  214. package/support/vendor/symfony/var-dumper/Caster/UninitializedStub.php +25 -0
  215. package/support/vendor/symfony/var-dumper/Caster/UuidCaster.php +2 -0
  216. package/support/vendor/symfony/var-dumper/Caster/VirtualStub.php +21 -0
  217. package/support/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +25 -10
  218. package/support/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php +7 -5
  219. package/support/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +103 -72
  220. package/support/vendor/symfony/var-dumper/Cloner/ClonerInterface.php +1 -5
  221. package/support/vendor/symfony/var-dumper/Cloner/Cursor.php +21 -21
  222. package/support/vendor/symfony/var-dumper/Cloner/Data.php +51 -77
  223. package/support/vendor/symfony/var-dumper/Cloner/DumperInterface.php +11 -14
  224. package/support/vendor/symfony/var-dumper/Cloner/Stub.php +40 -31
  225. package/support/vendor/symfony/var-dumper/Cloner/VarCloner.php +21 -104
  226. package/support/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +9 -19
  227. package/support/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php +10 -11
  228. package/support/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +27 -15
  229. package/support/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +68 -48
  230. package/support/vendor/symfony/var-dumper/Dumper/CliDumper.php +126 -113
  231. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php +1 -1
  232. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php +0 -3
  233. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php +5 -6
  234. package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php +10 -15
  235. package/support/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php +8 -11
  236. package/support/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php +3 -0
  237. package/support/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +122 -146
  238. package/support/vendor/symfony/var-dumper/Dumper/ServerDumper.php +10 -10
  239. package/support/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php +1 -1
  240. package/support/vendor/symfony/var-dumper/LICENSE +1 -1
  241. package/support/vendor/symfony/var-dumper/README.md +6 -6
  242. package/support/vendor/symfony/var-dumper/Resources/bin/var-dump-server +4 -0
  243. package/support/vendor/symfony/var-dumper/Resources/functions/dump.php +35 -10
  244. package/support/vendor/symfony/var-dumper/Server/Connection.php +16 -14
  245. package/support/vendor/symfony/var-dumper/Server/DumpServer.php +16 -14
  246. package/support/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php +9 -9
  247. package/support/vendor/symfony/var-dumper/VarDumper.php +69 -17
  248. package/support/vendor/symfony/var-dumper/composer.json +10 -16
  249. package/support/vendor/symfony/polyfill-php72/Php72.php +0 -217
  250. package/support/vendor/symfony/polyfill-php72/README.md +0 -28
  251. package/support/vendor/symfony/polyfill-php72/bootstrap.php +0 -57
  252. package/support/vendor/symfony/polyfill-php80/LICENSE +0 -19
  253. package/support/vendor/symfony/polyfill-php80/Php80.php +0 -105
  254. package/support/vendor/symfony/polyfill-php80/README.md +0 -24
  255. package/support/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +0 -22
  256. package/support/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +0 -11
  257. package/support/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +0 -5
  258. package/support/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +0 -5
  259. package/support/vendor/symfony/polyfill-php80/bootstrap.php +0 -42
  260. package/support/vendor/symfony/polyfill-php80/composer.json +0 -40
@@ -9,33 +9,58 @@
9
9
  * file that was distributed with this source code.
10
10
  */
11
11
 
12
+ use Symfony\Component\VarDumper\Caster\ScalarStub;
12
13
  use Symfony\Component\VarDumper\VarDumper;
13
14
 
14
15
  if (!function_exists('dump')) {
15
16
  /**
16
17
  * @author Nicolas Grekas <p@tchwork.com>
18
+ * @author Alexandre Daubois <alex.daubois@gmail.com>
17
19
  */
18
- function dump($var, ...$moreVars)
20
+ function dump(mixed ...$vars): mixed
19
21
  {
20
- VarDumper::dump($var);
22
+ if (!$vars) {
23
+ VarDumper::dump(new ScalarStub('🐛'));
21
24
 
22
- foreach ($moreVars as $v) {
23
- VarDumper::dump($v);
25
+ return null;
24
26
  }
25
27
 
26
- if (1 < func_num_args()) {
27
- return func_get_args();
28
+ if (array_key_exists(0, $vars) && 1 === count($vars)) {
29
+ VarDumper::dump($vars[0]);
30
+ $k = 0;
31
+ } else {
32
+ foreach ($vars as $k => $v) {
33
+ VarDumper::dump($v, is_int($k) ? 1 + $k : $k);
34
+ }
28
35
  }
29
36
 
30
- return $var;
37
+ if (1 < count($vars)) {
38
+ return $vars;
39
+ }
40
+
41
+ return $vars[$k];
31
42
  }
32
43
  }
33
44
 
34
45
  if (!function_exists('dd')) {
35
- function dd(...$vars)
46
+ function dd(mixed ...$vars): never
36
47
  {
37
- foreach ($vars as $v) {
38
- VarDumper::dump($v);
48
+ if (!in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) && !headers_sent()) {
49
+ header('HTTP/1.1 500 Internal Server Error');
50
+ }
51
+
52
+ if (!$vars) {
53
+ VarDumper::dump(new ScalarStub('🐛'));
54
+
55
+ exit(1);
56
+ }
57
+
58
+ if (array_key_exists(0, $vars) && 1 === count($vars)) {
59
+ VarDumper::dump($vars[0]);
60
+ } else {
61
+ foreach ($vars as $k => $v) {
62
+ VarDumper::dump($v, is_int($k) ? 1 + $k : $k);
63
+ }
39
64
  }
40
65
 
41
66
  exit(1);
@@ -21,22 +21,26 @@ use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
21
21
  */
22
22
  class Connection
23
23
  {
24
- private $host;
25
- private $contextProviders;
24
+ private string $host;
25
+
26
+ /**
27
+ * @var resource|null
28
+ */
26
29
  private $socket;
27
30
 
28
31
  /**
29
32
  * @param string $host The server host
30
33
  * @param ContextProviderInterface[] $contextProviders Context providers indexed by context name
31
34
  */
32
- public function __construct(string $host, array $contextProviders = [])
33
- {
34
- if (false === strpos($host, '://')) {
35
+ public function __construct(
36
+ string $host,
37
+ private array $contextProviders = [],
38
+ ) {
39
+ if (!str_contains($host, '://')) {
35
40
  $host = 'tcp://'.$host;
36
41
  }
37
42
 
38
43
  $this->host = $host;
39
- $this->contextProviders = $contextProviders;
40
44
  }
41
45
 
42
46
  public function getContextProviders(): array
@@ -58,7 +62,7 @@ class Connection
58
62
  $context = array_filter($context);
59
63
  $encodedPayload = base64_encode(serialize([$data, $context]))."\n";
60
64
 
61
- set_error_handler([self::class, 'nullErrorHandler']);
65
+ set_error_handler(static fn () => null);
62
66
  try {
63
67
  if (-1 !== stream_socket_sendto($this->socket, $encodedPayload)) {
64
68
  return true;
@@ -78,16 +82,14 @@ class Connection
78
82
  return false;
79
83
  }
80
84
 
81
- private static function nullErrorHandler($t, $m)
82
- {
83
- // no-op
84
- }
85
-
85
+ /**
86
+ * @return resource|null
87
+ */
86
88
  private function createSocket()
87
89
  {
88
- set_error_handler([self::class, 'nullErrorHandler']);
90
+ set_error_handler(static fn () => null);
89
91
  try {
90
- return stream_socket_client($this->host, $errno, $errstr, 3, \STREAM_CLIENT_CONNECT | \STREAM_CLIENT_ASYNC_CONNECT);
92
+ return stream_socket_client($this->host, $errno, $errstr, 3) ?: null;
91
93
  } finally {
92
94
  restore_error_handler();
93
95
  }
@@ -24,24 +24,28 @@ use Symfony\Component\VarDumper\Cloner\Stub;
24
24
  */
25
25
  class DumpServer
26
26
  {
27
- private $host;
27
+ private string $host;
28
+
29
+ /**
30
+ * @var resource|null
31
+ */
28
32
  private $socket;
29
- private $logger;
30
33
 
31
- public function __construct(string $host, LoggerInterface $logger = null)
32
- {
33
- if (false === strpos($host, '://')) {
34
+ public function __construct(
35
+ string $host,
36
+ private ?LoggerInterface $logger = null,
37
+ ) {
38
+ if (!str_contains($host, '://')) {
34
39
  $host = 'tcp://'.$host;
35
40
  }
36
41
 
37
42
  $this->host = $host;
38
- $this->logger = $logger;
39
43
  }
40
44
 
41
45
  public function start(): void
42
46
  {
43
47
  if (!$this->socket = stream_socket_server($this->host, $errno, $errstr)) {
44
- throw new \RuntimeException(sprintf('Server start failed on "%s": ', $this->host).$errstr.' '.$errno);
48
+ throw new \RuntimeException(\sprintf('Server start failed on "%s": ', $this->host).$errstr.' '.$errno);
45
49
  }
46
50
  }
47
51
 
@@ -52,26 +56,24 @@ class DumpServer
52
56
  }
53
57
 
54
58
  foreach ($this->getMessages() as $clientId => $message) {
59
+ $this->logger?->info('Received a payload from client {clientId}', ['clientId' => $clientId]);
60
+
55
61
  $payload = @unserialize(base64_decode($message), ['allowed_classes' => [Data::class, Stub::class]]);
56
62
 
57
63
  // Impossible to decode the message, give up.
58
64
  if (false === $payload) {
59
- if ($this->logger) {
60
- $this->logger->warning('Unable to decode a message from {clientId} client.', ['clientId' => $clientId]);
61
- }
65
+ $this->logger?->warning('Unable to decode a message from {clientId} client.', ['clientId' => $clientId]);
62
66
 
63
67
  continue;
64
68
  }
65
69
 
66
70
  if (!\is_array($payload) || \count($payload) < 2 || !$payload[0] instanceof Data || !\is_array($payload[1])) {
67
- if ($this->logger) {
68
- $this->logger->warning('Invalid payload from {clientId} client. Expected an array of two elements (Data $data, array $context)', ['clientId' => $clientId]);
69
- }
71
+ $this->logger?->warning('Invalid payload from {clientId} client. Expected an array of two elements (Data $data, array $context)', ['clientId' => $clientId]);
70
72
 
71
73
  continue;
72
74
  }
73
75
 
74
- list($data, $context) = $payload;
76
+ [$data, $context] = $payload;
75
77
 
76
78
  $callback($data, $context, $clientId);
77
79
  }
@@ -22,12 +22,15 @@ trait VarDumperTestTrait
22
22
  /**
23
23
  * @internal
24
24
  */
25
- private $varDumperConfig = [
25
+ private array $varDumperConfig = [
26
26
  'casters' => [],
27
27
  'flags' => null,
28
28
  ];
29
29
 
30
- protected function setUpVarDumper(array $casters, int $flags = null): void
30
+ /**
31
+ * @param array<string, callable> $casters
32
+ */
33
+ protected function setUpVarDumper(array $casters, ?int $flags = null): void
31
34
  {
32
35
  $this->varDumperConfig['casters'] = $casters;
33
36
  $this->varDumperConfig['flags'] = $flags;
@@ -42,20 +45,17 @@ trait VarDumperTestTrait
42
45
  $this->varDumperConfig['flags'] = null;
43
46
  }
44
47
 
45
- public function assertDumpEquals($expected, $data, $filter = 0, $message = '')
48
+ public function assertDumpEquals(mixed $expected, mixed $data, int $filter = 0, string $message = '')
46
49
  {
47
50
  $this->assertSame($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message);
48
51
  }
49
52
 
50
- public function assertDumpMatchesFormat($expected, $data, $filter = 0, $message = '')
53
+ public function assertDumpMatchesFormat(mixed $expected, mixed $data, int $filter = 0, string $message = '')
51
54
  {
52
55
  $this->assertStringMatchesFormat($this->prepareExpectation($expected, $filter), $this->getDump($data, null, $filter), $message);
53
56
  }
54
57
 
55
- /**
56
- * @return string|null
57
- */
58
- protected function getDump($data, $key = null, $filter = 0)
58
+ protected function getDump(mixed $data, string|int|null $key = null, int $filter = 0): ?string
59
59
  {
60
60
  if (null === $flags = $this->varDumperConfig['flags']) {
61
61
  $flags = getenv('DUMP_LIGHT_ARRAY') ? CliDumper::DUMP_LIGHT_ARRAY : 0;
@@ -76,7 +76,7 @@ trait VarDumperTestTrait
76
76
  return rtrim($dumper->dump($data, true));
77
77
  }
78
78
 
79
- private function prepareExpectation($expected, int $filter): string
79
+ private function prepareExpectation(mixed $expected, int $filter): string
80
80
  {
81
81
  if (!\is_string($expected)) {
82
82
  $expected = $this->getDump($expected, null, $filter);
@@ -11,12 +11,18 @@
11
11
 
12
12
  namespace Symfony\Component\VarDumper;
13
13
 
14
+ use Symfony\Component\ErrorHandler\ErrorRenderer\FileLinkFormatter;
15
+ use Symfony\Component\HttpFoundation\Request;
16
+ use Symfony\Component\HttpFoundation\RequestStack;
14
17
  use Symfony\Component\VarDumper\Caster\ReflectionCaster;
15
18
  use Symfony\Component\VarDumper\Cloner\VarCloner;
16
19
  use Symfony\Component\VarDumper\Dumper\CliDumper;
20
+ use Symfony\Component\VarDumper\Dumper\ContextProvider\CliContextProvider;
21
+ use Symfony\Component\VarDumper\Dumper\ContextProvider\RequestContextProvider;
17
22
  use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
18
23
  use Symfony\Component\VarDumper\Dumper\ContextualizedDumper;
19
24
  use Symfony\Component\VarDumper\Dumper\HtmlDumper;
25
+ use Symfony\Component\VarDumper\Dumper\ServerDumper;
20
26
 
21
27
  // Load the global dump() function
22
28
  require_once __DIR__.'/Resources/functions/dump.php';
@@ -26,31 +32,21 @@ require_once __DIR__.'/Resources/functions/dump.php';
26
32
  */
27
33
  class VarDumper
28
34
  {
35
+ /**
36
+ * @var callable|null
37
+ */
29
38
  private static $handler;
30
39
 
31
- public static function dump($var)
40
+ public static function dump(mixed $var, ?string $label = null): mixed
32
41
  {
33
42
  if (null === self::$handler) {
34
- $cloner = new VarCloner();
35
- $cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO);
36
-
37
- if (isset($_SERVER['VAR_DUMPER_FORMAT'])) {
38
- $dumper = 'html' === $_SERVER['VAR_DUMPER_FORMAT'] ? new HtmlDumper() : new CliDumper();
39
- } else {
40
- $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper() : new HtmlDumper();
41
- }
42
-
43
- $dumper = new ContextualizedDumper($dumper, [new SourceContextProvider()]);
44
-
45
- self::$handler = function ($var) use ($cloner, $dumper) {
46
- $dumper->dump($cloner->cloneVar($var));
47
- };
43
+ self::register();
48
44
  }
49
45
 
50
- return (self::$handler)($var);
46
+ return (self::$handler)($var, $label);
51
47
  }
52
48
 
53
- public static function setHandler(callable $callable = null)
49
+ public static function setHandler(?callable $callable): ?callable
54
50
  {
55
51
  $prevHandler = self::$handler;
56
52
 
@@ -63,4 +59,60 @@ class VarDumper
63
59
 
64
60
  return $prevHandler;
65
61
  }
62
+
63
+ private static function register(): void
64
+ {
65
+ $cloner = new VarCloner();
66
+ $cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO);
67
+
68
+ $format = $_SERVER['VAR_DUMPER_FORMAT'] ?? null;
69
+ switch (true) {
70
+ case 'html' === $format:
71
+ $dumper = new HtmlDumper();
72
+ break;
73
+ case 'cli' === $format:
74
+ $dumper = new CliDumper();
75
+ break;
76
+ case 'server' === $format:
77
+ case $format && 'tcp' === parse_url($format, \PHP_URL_SCHEME):
78
+ $host = 'server' === $format ? $_SERVER['VAR_DUMPER_SERVER'] ?? '127.0.0.1:9912' : $format;
79
+ $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? new CliDumper() : new HtmlDumper();
80
+ $dumper = new ServerDumper($host, $dumper, self::getDefaultContextProviders());
81
+ break;
82
+ default:
83
+ $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? new CliDumper() : new HtmlDumper();
84
+ }
85
+
86
+ if (!$dumper instanceof ServerDumper) {
87
+ $dumper = new ContextualizedDumper($dumper, [new SourceContextProvider()]);
88
+ }
89
+
90
+ self::$handler = function ($var, ?string $label = null) use ($cloner, $dumper) {
91
+ $var = $cloner->cloneVar($var);
92
+
93
+ if (null !== $label) {
94
+ $var = $var->withContext(['label' => $label]);
95
+ }
96
+
97
+ $dumper->dump($var);
98
+ };
99
+ }
100
+
101
+ private static function getDefaultContextProviders(): array
102
+ {
103
+ $contextProviders = [];
104
+
105
+ if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) && class_exists(Request::class)) {
106
+ $requestStack = new RequestStack();
107
+ $requestStack->push(Request::createFromGlobals());
108
+ $contextProviders['request'] = new RequestContextProvider($requestStack);
109
+ }
110
+
111
+ $fileLinkFormatter = class_exists(FileLinkFormatter::class) ? new FileLinkFormatter(null, $requestStack ?? null) : null;
112
+
113
+ return $contextProviders + [
114
+ 'cli' => new CliContextProvider(),
115
+ 'source' => new SourceContextProvider(null, null, $fileLinkFormatter),
116
+ ];
117
+ }
66
118
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "symfony/var-dumper",
3
3
  "type": "library",
4
- "description": "Symfony mechanism for exploring and dumping PHP variables",
4
+ "description": "Provides mechanisms for walking through any arbitrary PHP variable",
5
5
  "keywords": ["dump", "debug"],
6
6
  "homepage": "https://symfony.com",
7
7
  "license": "MIT",
@@ -16,25 +16,19 @@
16
16
  }
17
17
  ],
18
18
  "require": {
19
- "php": ">=7.1.3",
20
- "symfony/polyfill-mbstring": "~1.0",
21
- "symfony/polyfill-php72": "~1.5",
22
- "symfony/polyfill-php80": "^1.15"
19
+ "php": ">=8.2",
20
+ "symfony/deprecation-contracts": "^2.5|^3",
21
+ "symfony/polyfill-mbstring": "~1.0"
23
22
  },
24
23
  "require-dev": {
25
- "ext-iconv": "*",
26
- "symfony/console": "^3.4|^4.0|^5.0",
27
- "symfony/process": "^4.4|^5.0",
28
- "twig/twig": "^1.34|^2.4|^3.0"
24
+ "symfony/console": "^6.4|^7.0",
25
+ "symfony/http-kernel": "^6.4|^7.0",
26
+ "symfony/process": "^6.4|^7.0",
27
+ "symfony/uid": "^6.4|^7.0",
28
+ "twig/twig": "^3.12"
29
29
  },
30
30
  "conflict": {
31
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
32
- "symfony/console": "<3.4"
33
- },
34
- "suggest": {
35
- "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
36
- "ext-intl": "To show region name in time zone dump",
37
- "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
31
+ "symfony/console": "<6.4"
38
32
  },
39
33
  "autoload": {
40
34
  "files": [ "Resources/functions/dump.php" ],
@@ -1,217 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Php72;
13
-
14
- /**
15
- * @author Nicolas Grekas <p@tchwork.com>
16
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
17
- *
18
- * @internal
19
- */
20
- final class Php72
21
- {
22
- private static $hashMask;
23
-
24
- public static function utf8_encode($s)
25
- {
26
- $s .= $s;
27
- $len = \strlen($s);
28
-
29
- for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
30
- switch (true) {
31
- case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
32
- case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
33
- default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
34
- }
35
- }
36
-
37
- return substr($s, 0, $j);
38
- }
39
-
40
- public static function utf8_decode($s)
41
- {
42
- $s = (string) $s;
43
- $len = \strlen($s);
44
-
45
- for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
46
- switch ($s[$i] & "\xF0") {
47
- case "\xC0":
48
- case "\xD0":
49
- $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
50
- $s[$j] = $c < 256 ? \chr($c) : '?';
51
- break;
52
-
53
- case "\xF0":
54
- ++$i;
55
- // no break
56
-
57
- case "\xE0":
58
- $s[$j] = '?';
59
- $i += 2;
60
- break;
61
-
62
- default:
63
- $s[$j] = $s[$i];
64
- }
65
- }
66
-
67
- return substr($s, 0, $j);
68
- }
69
-
70
- public static function php_os_family()
71
- {
72
- if ('\\' === \DIRECTORY_SEPARATOR) {
73
- return 'Windows';
74
- }
75
-
76
- $map = array(
77
- 'Darwin' => 'Darwin',
78
- 'DragonFly' => 'BSD',
79
- 'FreeBSD' => 'BSD',
80
- 'NetBSD' => 'BSD',
81
- 'OpenBSD' => 'BSD',
82
- 'Linux' => 'Linux',
83
- 'SunOS' => 'Solaris',
84
- );
85
-
86
- return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown';
87
- }
88
-
89
- public static function spl_object_id($object)
90
- {
91
- if (null === self::$hashMask) {
92
- self::initHashMask();
93
- }
94
- if (null === $hash = spl_object_hash($object)) {
95
- return;
96
- }
97
-
98
- // On 32-bit systems, PHP_INT_SIZE is 4,
99
- return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
100
- }
101
-
102
- public static function sapi_windows_vt100_support($stream, $enable = null)
103
- {
104
- if (!\is_resource($stream)) {
105
- trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
106
-
107
- return false;
108
- }
109
-
110
- $meta = stream_get_meta_data($stream);
111
-
112
- if ('STDIO' !== $meta['stream_type']) {
113
- trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING);
114
-
115
- return false;
116
- }
117
-
118
- // We cannot actually disable vt100 support if it is set
119
- if (false === $enable || !self::stream_isatty($stream)) {
120
- return false;
121
- }
122
-
123
- // The native function does not apply to stdin
124
- $meta = array_map('strtolower', $meta);
125
- $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
126
-
127
- return !$stdin
128
- && (false !== getenv('ANSICON')
129
- || 'ON' === getenv('ConEmuANSI')
130
- || 'xterm' === getenv('TERM')
131
- || 'Hyper' === getenv('TERM_PROGRAM'));
132
- }
133
-
134
- public static function stream_isatty($stream)
135
- {
136
- if (!\is_resource($stream)) {
137
- trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
138
-
139
- return false;
140
- }
141
-
142
- if ('\\' === \DIRECTORY_SEPARATOR) {
143
- $stat = @fstat($stream);
144
- // Check if formatted mode is S_IFCHR
145
- return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
146
- }
147
-
148
- return \function_exists('posix_isatty') && @posix_isatty($stream);
149
- }
150
-
151
- private static function initHashMask()
152
- {
153
- $obj = (object) array();
154
- self::$hashMask = -1;
155
-
156
- // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
157
- $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
158
- foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
159
- if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
160
- $frame['line'] = 0;
161
- break;
162
- }
163
- }
164
- if (!empty($frame['line'])) {
165
- ob_start();
166
- debug_zval_dump($obj);
167
- self::$hashMask = (int) substr(ob_get_clean(), 17);
168
- }
169
-
170
- self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
171
- }
172
-
173
- public static function mb_chr($code, $encoding = null)
174
- {
175
- if (0x80 > $code %= 0x200000) {
176
- $s = \chr($code);
177
- } elseif (0x800 > $code) {
178
- $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
179
- } elseif (0x10000 > $code) {
180
- $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
181
- } else {
182
- $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
183
- }
184
-
185
- if ('UTF-8' !== $encoding) {
186
- $s = mb_convert_encoding($s, $encoding, 'UTF-8');
187
- }
188
-
189
- return $s;
190
- }
191
-
192
- public static function mb_ord($s, $encoding = null)
193
- {
194
- if (null === $encoding) {
195
- $s = mb_convert_encoding($s, 'UTF-8');
196
- } elseif ('UTF-8' !== $encoding) {
197
- $s = mb_convert_encoding($s, 'UTF-8', $encoding);
198
- }
199
-
200
- if (1 === \strlen($s)) {
201
- return \ord($s);
202
- }
203
-
204
- $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
205
- if (0xF0 <= $code) {
206
- return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
207
- }
208
- if (0xE0 <= $code) {
209
- return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
210
- }
211
- if (0xC0 <= $code) {
212
- return (($code - 0xC0) << 6) + $s[2] - 0x80;
213
- }
214
-
215
- return $code;
216
- }
217
- }
@@ -1,28 +0,0 @@
1
- Symfony Polyfill / Php72
2
- ========================
3
-
4
- This component provides functions added to PHP 7.2 core:
5
-
6
- - [`spl_object_id`](https://php.net/spl_object_id)
7
- - [`stream_isatty`](https://php.net/stream_isatty)
8
-
9
- On Windows only:
10
-
11
- - [`sapi_windows_vt100_support`](https://php.net/sapi_windows_vt100_support)
12
-
13
- Moved to core since 7.2 (was in the optional XML extension earlier):
14
-
15
- - [`utf8_encode`](https://php.net/utf8_encode)
16
- - [`utf8_decode`](https://php.net/utf8_decode)
17
-
18
- Also, it provides constants added to PHP 7.2:
19
- - [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
20
- - [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
21
-
22
- More information can be found in the
23
- [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
24
-
25
- License
26
- =======
27
-
28
- This library is released under the [MIT license](LICENSE).