@vituum/vite-plugin-latte 2.0.0-next.5 → 2.0.1

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 (213) hide show
  1. package/README.md +1 -1
  2. package/index.js +2 -1
  3. package/package.json +20 -10
  4. package/vendor/composer/autoload_classmap.php +3 -2
  5. package/vendor/composer/autoload_static.php +3 -2
  6. package/vendor/composer/installed.json +21 -17
  7. package/vendor/composer/installed.php +8 -8
  8. package/vendor/latte/latte/composer.json +9 -2
  9. package/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php +7 -7
  10. package/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php +5 -4
  11. package/vendor/latte/latte/src/Bridges/Tracy/TracyExtension.php +2 -4
  12. package/vendor/latte/latte/src/Bridges/Tracy/dist/panel.phtml +2 -4
  13. package/vendor/latte/latte/src/Bridges/Tracy/dist/tab.phtml +2 -4
  14. package/vendor/latte/latte/src/Latte/Compiler/Block.php +1 -3
  15. package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +4 -8
  16. package/vendor/latte/latte/src/Latte/Compiler/Node.php +6 -3
  17. package/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php +15 -6
  18. package/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php +14 -9
  19. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php +7 -3
  20. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php +4 -3
  21. package/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php +5 -4
  22. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php +6 -5
  23. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php +4 -6
  24. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php +4 -3
  25. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php +5 -7
  26. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ExpressionAttributeNode.php +6 -4
  27. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/TagNode.php +1 -3
  28. package/vendor/latte/latte/src/Latte/Compiler/Nodes/NopNode.php +4 -3
  29. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php +4 -3
  30. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArrayItemNode.php +4 -3
  31. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ClosureUseNode.php +4 -3
  32. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php +4 -3
  33. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php +4 -3
  34. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php +4 -3
  35. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php +4 -3
  36. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php +5 -4
  37. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AuxiliaryNode.php +4 -3
  38. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php +5 -4
  39. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php +4 -3
  40. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php +4 -3
  41. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php +4 -3
  42. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php +7 -6
  43. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php +5 -4
  44. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php +4 -3
  45. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php +4 -3
  46. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php +4 -3
  47. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InNode.php +4 -3
  48. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php +4 -3
  49. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php +4 -3
  50. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php +4 -3
  51. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php +4 -3
  52. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php +4 -3
  53. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php +4 -3
  54. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php +4 -3
  55. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php +4 -3
  56. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticMethodCallNode.php +4 -3
  57. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php +4 -3
  58. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TemporaryNode.php +7 -6
  59. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php +4 -3
  60. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php +4 -3
  61. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php +4 -3
  62. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php +4 -3
  63. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +4 -3
  64. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php +4 -3
  65. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/InterpolatedStringPartNode.php +4 -3
  66. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php +4 -3
  67. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ListItemNode.php +4 -3
  68. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ListNode.php +4 -3
  69. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php +4 -3
  70. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +4 -3
  71. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +4 -3
  72. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php +4 -3
  73. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/OperatorNode.php +1 -3
  74. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php +4 -3
  75. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php +4 -3
  76. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php +5 -4
  77. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php +5 -4
  78. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/InterpolatedStringNode.php +6 -5
  79. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php +4 -3
  80. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php +5 -4
  81. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php +4 -3
  82. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php +4 -3
  83. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php +4 -3
  84. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php +4 -3
  85. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VariadicPlaceholderNode.php +4 -3
  86. package/vendor/latte/latte/src/Latte/Compiler/Nodes/PrintNode.php +3 -4
  87. package/vendor/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php +7 -3
  88. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php +4 -3
  89. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TextNode.php +5 -4
  90. package/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php +23 -15
  91. package/vendor/latte/latte/src/Latte/Compiler/Position.php +5 -7
  92. package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +30 -9
  93. package/vendor/latte/latte/src/Latte/Compiler/Tag.php +6 -6
  94. package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +4 -6
  95. package/vendor/latte/latte/src/Latte/Compiler/TagParser.php +14 -11
  96. package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +2 -4
  97. package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +13 -11
  98. package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +21 -7
  99. package/vendor/latte/latte/src/Latte/Compiler/TemplateParser.php +32 -19
  100. package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +28 -21
  101. package/vendor/latte/latte/src/Latte/Compiler/Token.php +10 -9
  102. package/vendor/latte/latte/src/Latte/Compiler/TokenStream.php +20 -14
  103. package/vendor/latte/latte/src/Latte/ContentType.php +4 -3
  104. package/vendor/latte/latte/src/Latte/Engine.php +64 -35
  105. package/vendor/latte/latte/src/Latte/Essential/AuxiliaryIterator.php +3 -7
  106. package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +4 -5
  107. package/vendor/latte/latte/src/Latte/Essential/CachingIterator.php +2 -3
  108. package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +1 -3
  109. package/vendor/latte/latte/src/Latte/Essential/Filters.php +65 -32
  110. package/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php +8 -6
  111. package/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php +5 -6
  112. package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +3 -4
  113. package/vendor/latte/latte/src/Latte/Essential/Nodes/CustomFunctionCallNode.php +2 -4
  114. package/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php +2 -3
  115. package/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php +6 -6
  116. package/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php +3 -4
  117. package/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php +2 -3
  118. package/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php +3 -5
  119. package/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php +3 -5
  120. package/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php +4 -7
  121. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php +3 -5
  122. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +7 -8
  123. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php +4 -5
  124. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php +7 -6
  125. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php +6 -9
  126. package/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php +3 -4
  127. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php +8 -7
  128. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php +2 -4
  129. package/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php +6 -6
  130. package/vendor/latte/latte/src/Latte/Essential/Nodes/JumpNode.php +4 -8
  131. package/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php +3 -5
  132. package/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php +3 -4
  133. package/vendor/latte/latte/src/Latte/Essential/Nodes/NElseNode.php +8 -5
  134. package/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php +4 -4
  135. package/vendor/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php +4 -4
  136. package/vendor/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php +2 -4
  137. package/vendor/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php +2 -3
  138. package/vendor/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php +4 -5
  139. package/vendor/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php +9 -7
  140. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +3 -4
  141. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php +3 -4
  142. package/vendor/latte/latte/src/Latte/Essential/Nodes/TraceNode.php +2 -3
  143. package/vendor/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php +3 -4
  144. package/vendor/latte/latte/src/Latte/Essential/Nodes/TryNode.php +4 -5
  145. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarNode.php +8 -7
  146. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +2 -3
  147. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php +3 -4
  148. package/vendor/latte/latte/src/Latte/Essential/Nodes/WhileNode.php +5 -5
  149. package/vendor/latte/latte/src/Latte/Essential/Passes.php +26 -15
  150. package/vendor/latte/latte/src/Latte/Essential/RawPhpExtension.php +1 -3
  151. package/vendor/latte/latte/src/Latte/Essential/RollbackException.php +1 -3
  152. package/vendor/latte/latte/src/Latte/Essential/Tracer.php +20 -13
  153. package/vendor/latte/latte/src/Latte/Essential/TranslatorExtension.php +9 -10
  154. package/vendor/latte/latte/src/Latte/Extension.php +10 -6
  155. package/vendor/latte/latte/src/Latte/Feature.php +24 -0
  156. package/vendor/latte/latte/src/Latte/Helpers.php +18 -10
  157. package/vendor/latte/latte/src/Latte/Loader.php +1 -3
  158. package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +8 -5
  159. package/vendor/latte/latte/src/Latte/Loaders/StringLoader.php +5 -13
  160. package/vendor/latte/latte/src/Latte/Policy.php +4 -3
  161. package/vendor/latte/latte/src/Latte/Runtime/Block.php +2 -4
  162. package/vendor/latte/latte/src/Latte/{Cache.php → Runtime/Cache.php} +12 -11
  163. package/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php +3 -5
  164. package/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php +10 -11
  165. package/vendor/latte/latte/src/Latte/Runtime/FunctionExecutor.php +4 -6
  166. package/vendor/latte/latte/src/Latte/Runtime/Helpers.php +5 -7
  167. package/vendor/latte/latte/src/Latte/Runtime/Html.php +3 -5
  168. package/vendor/latte/latte/src/Latte/Runtime/HtmlHelpers.php +18 -18
  169. package/vendor/latte/latte/src/Latte/Runtime/HtmlStringable.php +1 -3
  170. package/vendor/latte/latte/src/Latte/Runtime/Template.php +23 -42
  171. package/vendor/latte/latte/src/Latte/Runtime/XmlHelpers.php +5 -7
  172. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php +14 -8
  173. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php +17 -11
  174. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php +4 -3
  175. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php +3 -4
  176. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticMethodCallNode.php +16 -10
  177. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php +4 -3
  178. package/vendor/latte/latte/src/Latte/Sandbox/RuntimeChecker.php +6 -5
  179. package/vendor/latte/latte/src/Latte/Sandbox/SandboxExtension.php +5 -4
  180. package/vendor/latte/latte/src/Latte/Sandbox/SecurityPolicy.php +17 -16
  181. package/vendor/latte/latte/src/Latte/attributes.php +7 -3
  182. package/vendor/latte/latte/src/Latte/exceptions.php +38 -3
  183. package/vendor/latte/latte/src/Tools/Linter.php +20 -14
  184. package/vendor/latte/latte/src/Tools/LinterExtension.php +26 -7
  185. package/vendor/nette/utils/composer.json +8 -1
  186. package/vendor/nette/utils/src/HtmlStringable.php +4 -1
  187. package/vendor/nette/utils/src/Iterators/CachingIterator.php +9 -24
  188. package/vendor/nette/utils/src/Iterators/Mapper.php +2 -3
  189. package/vendor/nette/utils/src/SmartObject.php +3 -0
  190. package/vendor/nette/utils/src/StaticClass.php +1 -1
  191. package/vendor/nette/utils/src/Translator.php +1 -1
  192. package/vendor/nette/utils/src/Utils/ArrayHash.php +1 -5
  193. package/vendor/nette/utils/src/Utils/ArrayList.php +3 -6
  194. package/vendor/nette/utils/src/Utils/Arrays.php +33 -10
  195. package/vendor/nette/utils/src/Utils/Callback.php +12 -7
  196. package/vendor/nette/utils/src/Utils/DateTime.php +1 -1
  197. package/vendor/nette/utils/src/Utils/FileInfo.php +5 -7
  198. package/vendor/nette/utils/src/Utils/FileSystem.php +5 -2
  199. package/vendor/nette/utils/src/Utils/Finder.php +27 -8
  200. package/vendor/nette/utils/src/Utils/Helpers.php +7 -1
  201. package/vendor/nette/utils/src/Utils/Html.php +123 -118
  202. package/vendor/nette/utils/src/Utils/Image.php +72 -54
  203. package/vendor/nette/utils/src/Utils/ImageColor.php +4 -0
  204. package/vendor/nette/utils/src/Utils/Iterables.php +16 -8
  205. package/vendor/nette/utils/src/Utils/Paginator.php +10 -43
  206. package/vendor/nette/utils/src/Utils/Reflection.php +17 -7
  207. package/vendor/nette/utils/src/Utils/ReflectionMethod.php +4 -1
  208. package/vendor/nette/utils/src/Utils/Strings.php +48 -15
  209. package/vendor/nette/utils/src/Utils/Type.php +41 -27
  210. package/vendor/nette/utils/src/Utils/Validators.php +8 -7
  211. package/vendor/latte/latte/src/Bridges/Tracy/panel.latte +0 -94
  212. package/vendor/latte/latte/src/Bridges/Tracy/tab.latte +0 -8
  213. package/vendor/latte/latte/src/Latte/PositionAwareException.php +0 -47
package/README.md CHANGED
@@ -39,6 +39,6 @@ or
39
39
 
40
40
  ### Requirements
41
41
 
42
- - [Node.js LTS (24.x)](https://nodejs.org/en/download/)
42
+ - [Node.js LTS (20.x)](https://nodejs.org/en/download/)
43
43
  - [PHP (8.x)](https://www.php.net/) or [Docker PHP (8.x)](https://hub.docker.com/_/php)
44
44
  - [Vite](https://vitejs.dev/)
package/index.js CHANGED
@@ -3,6 +3,7 @@ import { fileURLToPath } from 'node:url'
3
3
  import fs from 'node:fs'
4
4
  import process from 'node:process'
5
5
  import * as childProcess from 'node:child_process'
6
+ import { globSync } from 'tinyglobby'
6
7
  import picomatch from 'picomatch'
7
8
  import {
8
9
  getPackageInfo,
@@ -56,7 +57,7 @@ const renderTemplate = ({ server, path, filename, cwd, packageRoot, viteServer }
56
57
  if (options.data) {
57
58
  const normalizePaths = Array.isArray(options.data) ? options.data.map(path => normalizePath(path)) : normalizePath(options.data)
58
59
 
59
- options.data = fs.globSync(normalizePaths).map(entry => resolve(cwd, entry))
60
+ options.data = globSync(normalizePaths).map(entry => resolve(cwd, entry))
60
61
  }
61
62
 
62
63
  Object.keys(options.filters).forEach((key) => {
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "@vituum/vite-plugin-latte",
3
- "version": "2.0.0-next.5",
3
+ "version": "2.0.1",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "types/index.d.ts",
7
+ "description": "Vite plugin for PostCSS, adds basic plugins out of the box",
8
+ "keywords": [
9
+ "latte",
10
+ "vituum",
11
+ "vite",
12
+ "vite-plugin"
13
+ ],
7
14
  "scripts": {
8
15
  "lint": "npm run eslint && npm run tsc",
9
16
  "tsc": "tsc",
@@ -15,18 +22,21 @@
15
22
  "publish-next": "npm publish --tag next"
16
23
  },
17
24
  "dependencies": {
18
- "picomatch": "^4.0.3",
19
- "vituum": "^2.0.0-next.8"
25
+ "picomatch": "^4.0",
26
+ "tinyglobby": "^0.2",
27
+ "vituum": "^2.0"
28
+ },
29
+ "peerDependencies": {
30
+ "vite": "^8.0"
20
31
  },
21
32
  "devDependencies": {
22
- "@eslint/js": "^9.39",
23
- "@stylistic/eslint-plugin": "^5.7",
33
+ "@eslint/js": "^10.0",
34
+ "@stylistic/eslint-plugin": "^5.10",
24
35
  "@types/node": "^25",
25
36
  "@types/picomatch": "^4.0",
26
- "eslint": "^9.39",
27
- "globals": "^17.0",
28
- "typescript": "^5.9",
29
- "vite": "^8.0.0-beta.8"
37
+ "eslint": "^10.0",
38
+ "globals": "^17.4",
39
+ "typescript": "^5.9"
30
40
  },
31
41
  "files": [
32
42
  "index.js",
@@ -44,7 +54,7 @@
44
54
  }
45
55
  },
46
56
  "engines": {
47
- "node": "^24.0.0 || >=25.0.0"
57
+ "node": "^20.19.0 || >=22.12.0"
48
58
  },
49
59
  "repository": {
50
60
  "type": "git",
@@ -12,7 +12,6 @@ return array(
12
12
  'Latte\\Bridges\\Tracy\\BlueScreenPanel' => $vendorDir . '/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php',
13
13
  'Latte\\Bridges\\Tracy\\LattePanel' => $vendorDir . '/latte/latte/src/Bridges/Tracy/LattePanel.php',
14
14
  'Latte\\Bridges\\Tracy\\TracyExtension' => $vendorDir . '/latte/latte/src/Bridges/Tracy/TracyExtension.php',
15
- 'Latte\\Cache' => $vendorDir . '/latte/latte/src/Latte/Cache.php',
16
15
  'Latte\\CompileException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php',
17
16
  'Latte\\Compiler\\Block' => $vendorDir . '/latte/latte/src/Latte/Compiler/Block.php',
18
17
  'Latte\\Compiler\\Escaper' => $vendorDir . '/latte/latte/src/Latte/Compiler/Escaper.php',
@@ -156,14 +155,16 @@ return array(
156
155
  'Latte\\Essential\\TranslatorExtension' => $vendorDir . '/latte/latte/src/Latte/Essential/TranslatorExtension.php',
157
156
  'Latte\\Exception' => $vendorDir . '/latte/latte/src/Latte/exceptions.php',
158
157
  'Latte\\Extension' => $vendorDir . '/latte/latte/src/Latte/Extension.php',
158
+ 'Latte\\Feature' => $vendorDir . '/latte/latte/src/Latte/Feature.php',
159
159
  'Latte\\Helpers' => $vendorDir . '/latte/latte/src/Latte/Helpers.php',
160
160
  'Latte\\Loader' => $vendorDir . '/latte/latte/src/Latte/Loader.php',
161
161
  'Latte\\Loaders\\FileLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/FileLoader.php',
162
162
  'Latte\\Loaders\\StringLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/StringLoader.php',
163
163
  'Latte\\Policy' => $vendorDir . '/latte/latte/src/Latte/Policy.php',
164
- 'Latte\\PositionAwareException' => $vendorDir . '/latte/latte/src/Latte/PositionAwareException.php',
164
+ 'Latte\\PositionAwareException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php',
165
165
  'Latte\\RuntimeException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php',
166
166
  'Latte\\Runtime\\Block' => $vendorDir . '/latte/latte/src/Latte/Runtime/Block.php',
167
+ 'Latte\\Runtime\\Cache' => $vendorDir . '/latte/latte/src/Latte/Runtime/Cache.php',
167
168
  'Latte\\Runtime\\FilterExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterExecutor.php',
168
169
  'Latte\\Runtime\\FilterInfo' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterInfo.php',
169
170
  'Latte\\Runtime\\FunctionExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php',
@@ -35,7 +35,6 @@ class ComposerStaticInit8535741375194e2773348db6a0091487
35
35
  'Latte\\Bridges\\Tracy\\BlueScreenPanel' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php',
36
36
  'Latte\\Bridges\\Tracy\\LattePanel' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/LattePanel.php',
37
37
  'Latte\\Bridges\\Tracy\\TracyExtension' => __DIR__ . '/..' . '/latte/latte/src/Bridges/Tracy/TracyExtension.php',
38
- 'Latte\\Cache' => __DIR__ . '/..' . '/latte/latte/src/Latte/Cache.php',
39
38
  'Latte\\CompileException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php',
40
39
  'Latte\\Compiler\\Block' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Block.php',
41
40
  'Latte\\Compiler\\Escaper' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Escaper.php',
@@ -179,14 +178,16 @@ class ComposerStaticInit8535741375194e2773348db6a0091487
179
178
  'Latte\\Essential\\TranslatorExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/TranslatorExtension.php',
180
179
  'Latte\\Exception' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php',
181
180
  'Latte\\Extension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Extension.php',
181
+ 'Latte\\Feature' => __DIR__ . '/..' . '/latte/latte/src/Latte/Feature.php',
182
182
  'Latte\\Helpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Helpers.php',
183
183
  'Latte\\Loader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loader.php',
184
184
  'Latte\\Loaders\\FileLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/FileLoader.php',
185
185
  'Latte\\Loaders\\StringLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/StringLoader.php',
186
186
  'Latte\\Policy' => __DIR__ . '/..' . '/latte/latte/src/Latte/Policy.php',
187
- 'Latte\\PositionAwareException' => __DIR__ . '/..' . '/latte/latte/src/Latte/PositionAwareException.php',
187
+ 'Latte\\PositionAwareException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php',
188
188
  'Latte\\RuntimeException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php',
189
189
  'Latte\\Runtime\\Block' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Block.php',
190
+ 'Latte\\Runtime\\Cache' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Cache.php',
190
191
  'Latte\\Runtime\\FilterExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterExecutor.php',
191
192
  'Latte\\Runtime\\FilterInfo' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterInfo.php',
192
193
  'Latte\\Runtime\\FunctionExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php',
@@ -2,17 +2,17 @@
2
2
  "packages": [
3
3
  {
4
4
  "name": "latte/latte",
5
- "version": "v3.1.1",
6
- "version_normalized": "3.1.1.0",
5
+ "version": "v3.1.2",
6
+ "version_normalized": "3.1.2.0",
7
7
  "source": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/nette/latte.git",
10
- "reference": "cb98e705eeb0fd18f1f1c5cfe1a5f6217f9fa8b3"
10
+ "reference": "734ab908c17b28bd75b9331debd1901bec2f23ef"
11
11
  },
12
12
  "dist": {
13
13
  "type": "zip",
14
- "url": "https://api.github.com/repos/nette/latte/zipball/cb98e705eeb0fd18f1f1c5cfe1a5f6217f9fa8b3",
15
- "reference": "cb98e705eeb0fd18f1f1c5cfe1a5f6217f9fa8b3",
14
+ "url": "https://api.github.com/repos/nette/latte/zipball/734ab908c17b28bd75b9331debd1901bec2f23ef",
15
+ "reference": "734ab908c17b28bd75b9331debd1901bec2f23ef",
16
16
  "shasum": ""
17
17
  },
18
18
  "require": {
@@ -26,9 +26,11 @@
26
26
  },
27
27
  "require-dev": {
28
28
  "nette/php-generator": "^4.0",
29
- "nette/tester": "^2.5",
29
+ "nette/phpstan-rules": "^1.0",
30
+ "nette/tester": "^2.6",
30
31
  "nette/utils": "^4.0",
31
- "phpstan/phpstan-nette": "^2.0@stable",
32
+ "phpstan/extension-installer": "^1.4@stable",
33
+ "phpstan/phpstan": "^2.1@stable",
32
34
  "tracy/tracy": "^2.10"
33
35
  },
34
36
  "suggest": {
@@ -39,7 +41,7 @@
39
41
  "nette/php-generator": "to use tag {templatePrint}",
40
42
  "nette/utils": "to use filter |webalize"
41
43
  },
42
- "time": "2025-12-18T22:30:40+00:00",
44
+ "time": "2026-02-24T21:38:20+00:00",
43
45
  "bin": [
44
46
  "bin/latte-lint"
45
47
  ],
@@ -88,23 +90,23 @@
88
90
  ],
89
91
  "support": {
90
92
  "issues": "https://github.com/nette/latte/issues",
91
- "source": "https://github.com/nette/latte/tree/v3.1.1"
93
+ "source": "https://github.com/nette/latte/tree/v3.1.2"
92
94
  },
93
95
  "install-path": "../latte/latte"
94
96
  },
95
97
  {
96
98
  "name": "nette/utils",
97
- "version": "v4.1.1",
98
- "version_normalized": "4.1.1.0",
99
+ "version": "v4.1.3",
100
+ "version_normalized": "4.1.3.0",
99
101
  "source": {
100
102
  "type": "git",
101
103
  "url": "https://github.com/nette/utils.git",
102
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
104
+ "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe"
103
105
  },
104
106
  "dist": {
105
107
  "type": "zip",
106
- "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
107
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
108
+ "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe",
109
+ "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe",
108
110
  "shasum": ""
109
111
  },
110
112
  "require": {
@@ -116,8 +118,10 @@
116
118
  },
117
119
  "require-dev": {
118
120
  "jetbrains/phpstorm-attributes": "^1.2",
121
+ "nette/phpstan-rules": "^1.0",
119
122
  "nette/tester": "^2.5",
120
- "phpstan/phpstan-nette": "^2.0@stable",
123
+ "phpstan/extension-installer": "^1.4@stable",
124
+ "phpstan/phpstan": "^2.1@stable",
121
125
  "tracy/tracy": "^2.9"
122
126
  },
123
127
  "suggest": {
@@ -128,7 +132,7 @@
128
132
  "ext-mbstring": "to use Strings::lower() etc...",
129
133
  "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
130
134
  },
131
- "time": "2025-12-22T12:14:32+00:00",
135
+ "time": "2026-02-13T03:05:33+00:00",
132
136
  "type": "library",
133
137
  "extra": {
134
138
  "branch-alias": {
@@ -180,7 +184,7 @@
180
184
  ],
181
185
  "support": {
182
186
  "issues": "https://github.com/nette/utils/issues",
183
- "source": "https://github.com/nette/utils/tree/v4.1.1"
187
+ "source": "https://github.com/nette/utils/tree/v4.1.3"
184
188
  },
185
189
  "install-path": "../nette/utils"
186
190
  }
@@ -3,7 +3,7 @@
3
3
  'name' => '__root__',
4
4
  'pretty_version' => 'dev-next',
5
5
  'version' => 'dev-next',
6
- 'reference' => '0977a02306b7909ebd3ca2c216c3ef203c560a71',
6
+ 'reference' => '5e6a20cb81d9ef14f05ca7da6255b2dcf4d72ef2',
7
7
  'type' => 'library',
8
8
  'install_path' => __DIR__ . '/../../',
9
9
  'aliases' => array(),
@@ -13,25 +13,25 @@
13
13
  '__root__' => array(
14
14
  'pretty_version' => 'dev-next',
15
15
  'version' => 'dev-next',
16
- 'reference' => '0977a02306b7909ebd3ca2c216c3ef203c560a71',
16
+ 'reference' => '5e6a20cb81d9ef14f05ca7da6255b2dcf4d72ef2',
17
17
  'type' => 'library',
18
18
  'install_path' => __DIR__ . '/../../',
19
19
  'aliases' => array(),
20
20
  'dev_requirement' => false,
21
21
  ),
22
22
  'latte/latte' => array(
23
- 'pretty_version' => 'v3.1.1',
24
- 'version' => '3.1.1.0',
25
- 'reference' => 'cb98e705eeb0fd18f1f1c5cfe1a5f6217f9fa8b3',
23
+ 'pretty_version' => 'v3.1.2',
24
+ 'version' => '3.1.2.0',
25
+ 'reference' => '734ab908c17b28bd75b9331debd1901bec2f23ef',
26
26
  'type' => 'library',
27
27
  'install_path' => __DIR__ . '/../latte/latte',
28
28
  'aliases' => array(),
29
29
  'dev_requirement' => false,
30
30
  ),
31
31
  'nette/utils' => array(
32
- 'pretty_version' => 'v4.1.1',
33
- 'version' => '4.1.1.0',
34
- 'reference' => 'c99059c0315591f1a0db7ad6002000288ab8dc72',
32
+ 'pretty_version' => 'v4.1.3',
33
+ 'version' => '4.1.3.0',
34
+ 'reference' => 'bb3ea637e3d131d72acc033cfc2746ee893349fe',
35
35
  'type' => 'library',
36
36
  'install_path' => __DIR__ . '/../nette/utils',
37
37
  'aliases' => array(),
@@ -20,11 +20,13 @@
20
20
  "ext-tokenizer": "*"
21
21
  },
22
22
  "require-dev": {
23
- "nette/tester": "^2.5",
23
+ "nette/tester": "^2.6",
24
24
  "tracy/tracy": "^2.10",
25
25
  "nette/utils": "^4.0",
26
26
  "nette/php-generator": "^4.0",
27
- "phpstan/phpstan-nette": "^2.0@stable"
27
+ "phpstan/phpstan": "^2.1@stable",
28
+ "phpstan/extension-installer": "^1.4@stable",
29
+ "nette/phpstan-rules": "^1.0"
28
30
  },
29
31
  "suggest": {
30
32
  "ext-iconv": "to use filters |reverse, |substring",
@@ -54,5 +56,10 @@
54
56
  "branch-alias": {
55
57
  "dev-master": "3.1-dev"
56
58
  }
59
+ },
60
+ "config": {
61
+ "allow-plugins": {
62
+ "phpstan/extension-installer": true
63
+ }
57
64
  }
58
65
  }
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Bridges\Tracy;
11
9
 
12
10
  use Latte;
@@ -40,13 +38,14 @@ class BlueScreenPanel
40
38
  && version_compare(Tracy\Debugger::VERSION, '3.0', '<')
41
39
  ) {
42
40
  Tracy\Debugger::addSourceMapper(self::mapLatteSourceCode(...));
43
- $blueScreen->addFileGenerator(fn(string $file) => substr($file, -6) === '.latte'
41
+ $blueScreen->addFileGenerator(fn(string $file) => str_ends_with($file, '.latte')
44
42
  ? "{block content}\n\$END\$"
45
43
  : null);
46
44
  }
47
45
  }
48
46
 
49
47
 
48
+ /** @return ?array{tab: string, panel: string} */
50
49
  public static function renderError(?\Throwable $e): ?array
51
50
  {
52
51
  if ($e instanceof Latte\CompileException && $e->sourceName) {
@@ -60,7 +59,7 @@ class BlueScreenPanel
60
59
  : '<b>' . htmlspecialchars($e->sourceName . ($e->position?->line ? ':' . $e->position->line : '')) . '</b>')
61
60
  . '</p>')
62
61
  . '<pre class="code tracy-code"><div>'
63
- . BlueScreen::highlightLine(htmlspecialchars($e->sourceCode, ENT_IGNORE, 'UTF-8'), $e->position->line ?? 0, 15, $e->position->column ?? 0)
62
+ . BlueScreen::highlightLine(htmlspecialchars($e->sourceCode ?? '', ENT_IGNORE, 'UTF-8'), $e->position->line ?? 0, 15, $e->position->column ?? 0)
64
63
  . '</div></pre>',
65
64
  ];
66
65
  }
@@ -69,6 +68,7 @@ class BlueScreenPanel
69
68
  }
70
69
 
71
70
 
71
+ /** @return ?array{link: string, label: string} */
72
72
  public static function renderUnknownMacro(?\Throwable $e): ?array
73
73
  {
74
74
  if (
@@ -79,7 +79,7 @@ class BlueScreenPanel
79
79
  || preg_match('#Unknown attribute (n:\w+), did you mean (n:\w+)\?#A', $e->getMessage(), $m))
80
80
  ) {
81
81
  return [
82
- 'link' => Helpers::editorUri($e->sourceName, $e->position?->line, 'fix', $m[1], $m[2]),
82
+ 'link' => (string) Helpers::editorUri($e->sourceName, $e->position?->line, 'fix', $m[1], $m[2]),
83
83
  'label' => 'fix it',
84
84
  ];
85
85
  }
@@ -91,7 +91,7 @@ class BlueScreenPanel
91
91
  /** @return array{file: string, line: int, label: string, active: bool} */
92
92
  public static function mapLatteSourceCode(string $file, int $line): ?array
93
93
  {
94
- return ($source = Latte\Helpers::mapCompiledToSource($file, $line)) && @is_file($source['name']) // @ - may trigger error
94
+ return ($source = Latte\Helpers::mapCompiledToSource($file, $line)) && $source['name'] !== null && @is_file($source['name']) // @ - may trigger error
95
95
  ? ['file' => $source['name'], 'line' => $source['line'] ?? 0, 'column' => $source['column'] ?? 0, 'label' => 'Latte', 'active' => true]
96
96
  : null;
97
97
  }
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Bridges\Tracy;
11
9
 
12
10
  use Latte\Engine;
@@ -25,6 +23,8 @@ class LattePanel implements Tracy\IBarPanel
25
23
 
26
24
  /** @var Template[] */
27
25
  private array $templates = [];
26
+
27
+ /** @var \stdClass[] */
28
28
  private array $list;
29
29
  private ?string $name = null;
30
30
 
@@ -77,7 +77,8 @@ class LattePanel implements Tracy\IBarPanel
77
77
  }
78
78
 
79
79
  return Tracy\Helpers::capture(function () {
80
- $name = $this->name ?? basename(reset($this->templates)->getName());
80
+ $first = reset($this->templates);
81
+ $name = $this->name ?? ($first ? basename($first->getName()) : '');
81
82
  require __DIR__ . '/dist/tab.phtml';
82
83
  });
83
84
  }
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Bridges\Tracy;
11
9
 
12
10
  use Latte\Extension;
@@ -19,7 +17,7 @@ use Tracy;
19
17
  */
20
18
  class TracyExtension extends Extension
21
19
  {
22
- private LattePanel $panel;
20
+ private readonly LattePanel $panel;
23
21
 
24
22
 
25
23
  public function __construct(?string $name = null)
@@ -1,7 +1,5 @@
1
- <?php
2
- declare(strict_types=1);
3
- ?>
4
- <?php $colors = [
1
+ <?php declare(strict_types=1); ?>
2
+ <?php /** @var \stdClass[] $list */ ?><?php /** @var bool $dumpParameters */ ?><?php $colors = [
5
3
  'include' => '#00000052',
6
4
  'extends' => '#cd1c1c7d',
7
5
  'import' => '#17c35b8f',
@@ -1,7 +1,5 @@
1
- <?php
2
- declare(strict_types=1);
3
- ?>
4
- <span title="Latte Templates">
1
+ <?php declare(strict_types=1); ?>
2
+ <?php /** @var string $name */ ?><span title="Latte Templates">
5
3
  <svg viewBox="0 0 1793.77 1538.57">
6
4
  <path fill="#F1A443" d="M934.87 1166.46c41.84,-2.2 75.14,-17.07 99.91,-44.59 24.77,-27.53 37.16,-58.9 37.16,-94.13 0,-38.53 -12.38,-71.01 -37.16,-97.43 -24.77,-26.42 -58.08,-45.14 -99.91,-56.15l0 292.31zm-67.71 -786.08c-40.74,2.2 -72.66,15.41 -95.79,39.63 -23.12,24.22 -34.68,52.29 -34.68,84.22 0,33.03 11.29,63.03 33.86,90 22.57,26.98 54.77,43.21 96.61,48.72l0 -262.58zm0 1013.98l0 -64.41c-61.66,-5.5 -114.22,-15.97 -157.71,-31.38 -43.49,-15.41 -79.27,-37.43 -107.34,-66.06 -28.07,-28.63 -48.72,-64.13 -61.93,-106.52 -13.21,-42.39 -19.82,-92.76 -19.82,-151.11l198.18 0c4.4,35.23 10.18,64.41 17.34,87.53 7.16,23.12 16.51,41.84 28.07,56.15 11.56,14.31 25.6,25.05 42.11,32.2 16.51,7.16 36.88,12.39 61.1,15.69l0 -318.73c-55.05,-14.31 -102.94,-30.55 -143.67,-48.72 -40.74,-18.16 -74.59,-39.63 -101.57,-64.41 -26.97,-24.77 -47.34,-53.4 -61.1,-85.88 -13.76,-32.48 -20.64,-71.29 -20.64,-116.43 0,-42.93 8.26,-83.39 24.77,-121.38 16.51,-37.98 39.36,-71.29 68.53,-99.91 29.18,-28.63 63.58,-51.19 103.22,-67.71 39.63,-16.51 83.12,-25.32 130.46,-26.42l0 -72.67 67.71 0 0 72.67c203.68,6.6 310.47,113.4 320.38,320.38l-194.87 0c-5.5,-59.45 -18.44,-99.91 -38.81,-121.38 -20.37,-21.47 -49.27,-33.31 -86.7,-35.51l0 284.05c73.76,24.22 132.94,47.89 177.53,71.01 44.59,23.12 78.72,47.61 102.39,73.49 23.67,25.87 39.36,54.22 47.07,85.05 7.71,30.83 11.56,66.61 11.56,107.34 0,48.44 -7.98,92.2 -23.94,131.29 -15.97,39.08 -38.81,72.94 -68.54,101.56 -29.72,28.63 -65.5,51.2 -107.34,67.71 -41.84,16.51 -88.08,25.87 -138.72,28.07l0 64.41 -67.71 0z"/>
7
5
  <path fill="#5F4D36" d="M462.33 1411.31c-54.32,0 -98.33,-4.78 -132.03,-14.33 -33.7,-9.56 -59.85,-24.14 -78.46,-43.76 -18.61,-19.62 -30.93,-44.51 -36.97,-74.69 -6.04,-30.18 -9.05,-65.38 -9.05,-105.62 0,-9.05 0.5,-22.13 1.51,-39.23 1.01,-17.1 1.76,-35.21 2.27,-54.32 0.5,-19.11 1.26,-36.97 2.26,-53.56 1.01,-16.6 1.51,-28.42 1.51,-35.46 0,-58.34 -8.8,-99.08 -26.41,-122.22 -17.6,-23.13 -50.05,-34.7 -97.33,-34.7l0 -129.76c47.28,0 79.72,-11.82 97.33,-35.46 17.6,-23.64 26.41,-64.63 26.41,-122.97 0,-7.04 -0.5,-18.86 -1.51,-35.46 -1.01,-16.6 -1.76,-33.95 -2.26,-52.06 -0.5,-18.11 -1.26,-35.71 -2.27,-52.81 -1.01,-17.1 -1.51,-30.18 -1.51,-39.23 0,-40.24 3.02,-75.45 9.05,-105.62 6.03,-30.18 18.36,-55.08 36.97,-74.69 18.61,-19.62 44.76,-34.2 78.46,-43.76 33.7,-9.56 77.71,-14.34 132.03,-14.34l55.83 0 0 123.73 -33.2 0c-44.26,0 -74.18,7.04 -89.78,21.12 -15.59,14.08 -23.39,38.73 -23.39,73.94 0,45.27 1.51,90.03 4.53,134.29 3.02,44.26 4.53,89.02 4.53,134.29 0,21.12 -4.53,40.49 -13.58,58.09 -9.05,17.6 -20.87,33.19 -35.46,46.77 -14.59,13.58 -31.69,24.4 -51.3,32.44 -19.62,8.05 -39.98,13.58 -61.11,16.6 21.12,3.02 41.49,8.55 61.11,16.59 19.61,8.05 36.72,18.86 51.3,32.44 14.59,13.58 26.41,29.17 35.46,46.77 9.05,17.6 13.58,36.97 13.58,58.09 0,45.27 -1.51,90.28 -4.53,135.04 -3.02,44.76 -4.53,89.78 -4.53,135.05 0,35.21 7.79,59.85 23.39,73.94 15.59,14.08 45.52,21.12 89.78,21.12l33.2 0 0 123.73 -55.83 0z"/>
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Compiler;
11
9
 
12
10
  use Latte\Compiler\Nodes\Php\ExpressionNode;
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Compiler;
11
9
 
12
10
  use Latte;
@@ -74,14 +72,13 @@ final class Escaper
74
72
  ];
75
73
 
76
74
  private string $state = '';
77
- private string $tag = '';
78
75
  private string $subType = '';
79
76
 
80
77
 
81
78
  public function __construct(
82
79
  private string $contentType,
83
80
  ) {
84
- $this->state = in_array($contentType, [ContentType::Html, ContentType::Xml], true)
81
+ $this->state = in_array($contentType, [ContentType::Html, ContentType::Xml], strict: true)
85
82
  ? self::HtmlText
86
83
  : $contentType;
87
84
  }
@@ -119,7 +116,7 @@ final class Escaper
119
116
  $type = $el->getAttribute('type');
120
117
  $this->subType = $type === true || $type === null
121
118
  ? self::JavaScript
122
- : HtmlHelpers::classifyScriptType($type);
119
+ : (is_string($type) ? HtmlHelpers::classifyScriptType($type) : '');
123
120
  } elseif ($el->is('style')) {
124
121
  $this->subType = self::Css;
125
122
  }
@@ -134,7 +131,6 @@ final class Escaper
134
131
  public function enterHtmlTag(string $name): void
135
132
  {
136
133
  $this->state = self::HtmlTag;
137
- $this->tag = $name;
138
134
  }
139
135
 
140
136
 
@@ -236,7 +232,7 @@ final class Escaper
236
232
  public function escapeContent(string $str): string
237
233
  {
238
234
  return 'LR\Helpers::convertTo($ʟ_fi, '
239
- . var_export($this->export(), true) . ', '
235
+ . var_export($this->export(), return: true) . ', '
240
236
  . $str
241
237
  . ')';
242
238
  }
@@ -1,11 +1,14 @@
1
- <?php
2
-
3
- declare(strict_types=1);
1
+ <?php declare(strict_types=1);
4
2
 
5
3
  namespace Latte\Compiler;
6
4
 
7
5
 
8
6
  /**
7
+ * Base class for AST nodes representing parsed template structure.
8
+ *
9
+ * Each node must implement print() to generate PHP code and getIterator()
10
+ * to yield child nodes for compiler passes.
11
+ *
9
12
  * @implements \IteratorAggregate<Node>
10
13
  */
11
14
  abstract class Node implements \IteratorAggregate
@@ -1,12 +1,10 @@
1
- <?php
1
+ <?php declare(strict_types=1);
2
2
 
3
3
  /**
4
4
  * This file is part of the Latte (https://latte.nette.org)
5
5
  * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
6
  */
7
7
 
8
- declare(strict_types=1);
9
-
10
8
  namespace Latte\Compiler;
11
9
 
12
10
  use Latte\Compiler\Nodes\Php;
@@ -16,9 +14,15 @@ use Latte\Compiler\Nodes\Php\Scalar;
16
14
  use function array_merge, constant, defined;
17
15
 
18
16
 
17
+ /**
18
+ * Utility functions for working with AST nodes.
19
+ */
19
20
  final class NodeHelpers
20
21
  {
21
- /** @return Node[] */
22
+ /**
23
+ * @param callable(Node): bool $filter
24
+ * @return Node[]
25
+ */
22
26
  public static function find(Node $node, callable $filter): array
23
27
  {
24
28
  $found = [];
@@ -32,6 +36,7 @@ final class NodeHelpers
32
36
  }
33
37
 
34
38
 
39
+ /** @param callable(Node): bool $filter */
35
40
  public static function findFirst(Node $node, callable $filter): ?Node
36
41
  {
37
42
  $found = null;
@@ -49,7 +54,7 @@ final class NodeHelpers
49
54
  public static function clone(Node $node): Node
50
55
  {
51
56
  return (new NodeTraverser)
52
- ->traverse($node, enter: fn(Node $node) => clone $node);
57
+ ->traverse($node, enter: fn(Node $node) => clone $node) ?? throw new \LogicException;
53
58
  }
54
59
 
55
60
 
@@ -91,7 +96,11 @@ final class NodeHelpers
91
96
  ? constant($name)
92
97
  : throw new \InvalidArgumentException("The constant '$name' is not defined.");
93
98
 
94
- } elseif ($node instanceof Expression\ClassConstantFetchNode && $constants) {
99
+ } elseif (
100
+ $node instanceof Expression\ClassConstantFetchNode
101
+ && $constants
102
+ && $node->name instanceof Php\IdentifierNode
103
+ ) {
95
104
  $class = $node->class instanceof Php\NameNode
96
105
  ? $node->class->toCodeString()
97
106
  : self::toValue($node->class, $constants);