@vituum/vite-plugin-latte 1.1.0 → 1.2.0

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 (34) hide show
  1. package/latte/PlaceholderFunction.php +2 -2
  2. package/package.json +1 -1
  3. package/vendor/autoload.php +1 -1
  4. package/vendor/composer/autoload_classmap.php +2 -0
  5. package/vendor/composer/autoload_real.php +4 -4
  6. package/vendor/composer/autoload_static.php +4 -2
  7. package/vendor/composer/installed.json +7 -7
  8. package/vendor/composer/installed.php +5 -5
  9. package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +11 -2
  10. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +1 -1
  11. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +2 -2
  12. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +11 -21
  13. package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +1 -1
  14. package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +2 -2
  15. package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +275 -280
  16. package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +4 -4
  17. package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +10 -2
  18. package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +6 -2
  19. package/vendor/latte/latte/src/Latte/Engine.php +109 -97
  20. package/vendor/latte/latte/src/Latte/Essential/AuxiliaryIterator.php +46 -0
  21. package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +42 -25
  22. package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +76 -72
  23. package/vendor/latte/latte/src/Latte/Essential/Filters.php +95 -37
  24. package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +7 -0
  25. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +36 -0
  26. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +25 -3
  27. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +9 -2
  28. package/vendor/latte/latte/src/Latte/Essential/Passes.php +10 -50
  29. package/vendor/latte/latte/src/Latte/Helpers.php +3 -1
  30. package/vendor/latte/latte/src/Latte/Loader.php +1 -0
  31. package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +1 -2
  32. package/vendor/latte/latte/src/Latte/Runtime/Filters.php +1 -4
  33. package/vendor/latte/latte/src/Latte/Runtime/FunctionExecutor.php +68 -0
  34. package/vendor/latte/latte/src/Latte/Runtime/Template.php +1 -3
@@ -5,7 +5,7 @@ namespace App\Latte;
5
5
  class PlaceholderFunction {
6
6
 
7
7
  public static function execute($width, $height): string {
8
- $colors = ["333", "444", "666", "222", "777", "888", "111"];
9
- return 'https://via.placeholder.com/' . $width . 'x' . $height . '/' . $colors[array_rand($colors)];
8
+ $colors = ["333333", "444444", "666666", "222222", "777777", "888888", "111111"];
9
+ return 'https://placehold.co/' . $width . 'x' . $height . '/' . $colors[array_rand($colors)] . '/' . 'webp';
10
10
  }
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vituum/vite-plugin-latte",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "types/index.d.ts",
@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
22
22
 
23
23
  require_once __DIR__ . '/composer/autoload_real.php';
24
24
 
25
- return ComposerAutoloaderInitda1ce49ef3085539a79eddbb995629f3::getLoader();
25
+ return ComposerAutoloaderInit19cfb30b66a778b432af39bbd1e78bca::getLoader();
@@ -108,6 +108,7 @@ return array(
108
108
  'Latte\\Compiler\\TokenStream' => $vendorDir . '/latte/latte/src/Latte/Compiler/TokenStream.php',
109
109
  'Latte\\ContentType' => $vendorDir . '/latte/latte/src/Latte/ContentType.php',
110
110
  'Latte\\Engine' => $vendorDir . '/latte/latte/src/Latte/Engine.php',
111
+ 'Latte\\Essential\\AuxiliaryIterator' => $vendorDir . '/latte/latte/src/Latte/Essential/AuxiliaryIterator.php',
111
112
  'Latte\\Essential\\Blueprint' => $vendorDir . '/latte/latte/src/Latte/Essential/Blueprint.php',
112
113
  'Latte\\Essential\\CachingIterator' => $vendorDir . '/latte/latte/src/Latte/Essential/CachingIterator.php',
113
114
  'Latte\\Essential\\CoreExtension' => $vendorDir . '/latte/latte/src/Latte/Essential/CoreExtension.php',
@@ -169,6 +170,7 @@ return array(
169
170
  'Latte\\Runtime\\FilterExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterExecutor.php',
170
171
  'Latte\\Runtime\\FilterInfo' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterInfo.php',
171
172
  'Latte\\Runtime\\Filters' => $vendorDir . '/latte/latte/src/Latte/Runtime/Filters.php',
173
+ 'Latte\\Runtime\\FunctionExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php',
172
174
  'Latte\\Runtime\\Html' => $vendorDir . '/latte/latte/src/Latte/Runtime/Html.php',
173
175
  'Latte\\Runtime\\HtmlStringable' => $vendorDir . '/latte/latte/src/Latte/Runtime/HtmlStringable.php',
174
176
  'Latte\\Runtime\\Template' => $vendorDir . '/latte/latte/src/Latte/Runtime/Template.php',
@@ -2,7 +2,7 @@
2
2
 
3
3
  // autoload_real.php @generated by Composer
4
4
 
5
- class ComposerAutoloaderInitda1ce49ef3085539a79eddbb995629f3
5
+ class ComposerAutoloaderInit19cfb30b66a778b432af39bbd1e78bca
6
6
  {
7
7
  private static $loader;
8
8
 
@@ -24,12 +24,12 @@ class ComposerAutoloaderInitda1ce49ef3085539a79eddbb995629f3
24
24
 
25
25
  require __DIR__ . '/platform_check.php';
26
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInitda1ce49ef3085539a79eddbb995629f3', 'loadClassLoader'), true, true);
27
+ spl_autoload_register(array('ComposerAutoloaderInit19cfb30b66a778b432af39bbd1e78bca', 'loadClassLoader'), true, true);
28
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
- spl_autoload_unregister(array('ComposerAutoloaderInitda1ce49ef3085539a79eddbb995629f3', 'loadClassLoader'));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit19cfb30b66a778b432af39bbd1e78bca', 'loadClassLoader'));
30
30
 
31
31
  require __DIR__ . '/autoload_static.php';
32
- call_user_func(\Composer\Autoload\ComposerStaticInitda1ce49ef3085539a79eddbb995629f3::getInitializer($loader));
32
+ call_user_func(\Composer\Autoload\ComposerStaticInit19cfb30b66a778b432af39bbd1e78bca::getInitializer($loader));
33
33
 
34
34
  $loader->register(true);
35
35
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  namespace Composer\Autoload;
6
6
 
7
- class ComposerStaticInitda1ce49ef3085539a79eddbb995629f3
7
+ class ComposerStaticInit19cfb30b66a778b432af39bbd1e78bca
8
8
  {
9
9
  public static $classMap = array (
10
10
  'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
@@ -109,6 +109,7 @@ class ComposerStaticInitda1ce49ef3085539a79eddbb995629f3
109
109
  'Latte\\Compiler\\TokenStream' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TokenStream.php',
110
110
  'Latte\\ContentType' => __DIR__ . '/..' . '/latte/latte/src/Latte/ContentType.php',
111
111
  'Latte\\Engine' => __DIR__ . '/..' . '/latte/latte/src/Latte/Engine.php',
112
+ 'Latte\\Essential\\AuxiliaryIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/AuxiliaryIterator.php',
112
113
  'Latte\\Essential\\Blueprint' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/Blueprint.php',
113
114
  'Latte\\Essential\\CachingIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/CachingIterator.php',
114
115
  'Latte\\Essential\\CoreExtension' => __DIR__ . '/..' . '/latte/latte/src/Latte/Essential/CoreExtension.php',
@@ -170,6 +171,7 @@ class ComposerStaticInitda1ce49ef3085539a79eddbb995629f3
170
171
  'Latte\\Runtime\\FilterExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterExecutor.php',
171
172
  'Latte\\Runtime\\FilterInfo' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterInfo.php',
172
173
  'Latte\\Runtime\\Filters' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Filters.php',
174
+ 'Latte\\Runtime\\FunctionExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FunctionExecutor.php',
173
175
  'Latte\\Runtime\\Html' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Html.php',
174
176
  'Latte\\Runtime\\HtmlStringable' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/HtmlStringable.php',
175
177
  'Latte\\Runtime\\Template' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Template.php',
@@ -192,7 +194,7 @@ class ComposerStaticInitda1ce49ef3085539a79eddbb995629f3
192
194
  public static function getInitializer(ClassLoader $loader)
193
195
  {
194
196
  return \Closure::bind(function () use ($loader) {
195
- $loader->classMap = ComposerStaticInitda1ce49ef3085539a79eddbb995629f3::$classMap;
197
+ $loader->classMap = ComposerStaticInit19cfb30b66a778b432af39bbd1e78bca::$classMap;
196
198
 
197
199
  }, null, ClassLoader::class);
198
200
  }
@@ -2,17 +2,17 @@
2
2
  "packages": [
3
3
  {
4
4
  "name": "latte/latte",
5
- "version": "v3.0.12",
6
- "version_normalized": "3.0.12.0",
5
+ "version": "v3.0.16",
6
+ "version_normalized": "3.0.16.0",
7
7
  "source": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/nette/latte.git",
10
- "reference": "af6fc60e7a28cbc1717b8185ef04d36fd69f8711"
10
+ "reference": "0984953d961123075e95a9fa33ec4c4f4de266d2"
11
11
  },
12
12
  "dist": {
13
13
  "type": "zip",
14
- "url": "https://api.github.com/repos/nette/latte/zipball/af6fc60e7a28cbc1717b8185ef04d36fd69f8711",
15
- "reference": "af6fc60e7a28cbc1717b8185ef04d36fd69f8711",
14
+ "url": "https://api.github.com/repos/nette/latte/zipball/0984953d961123075e95a9fa33ec4c4f4de266d2",
15
+ "reference": "0984953d961123075e95a9fa33ec4c4f4de266d2",
16
16
  "shasum": ""
17
17
  },
18
18
  "require": {
@@ -38,7 +38,7 @@
38
38
  "nette/php-generator": "to use tag {templatePrint}",
39
39
  "nette/utils": "to use filter |webalize"
40
40
  },
41
- "time": "2023-11-13T11:31:09+00:00",
41
+ "time": "2024-05-14T09:54:10+00:00",
42
42
  "bin": [
43
43
  "bin/latte-lint"
44
44
  ],
@@ -84,7 +84,7 @@
84
84
  ],
85
85
  "support": {
86
86
  "issues": "https://github.com/nette/latte/issues",
87
- "source": "https://github.com/nette/latte/tree/v3.0.12"
87
+ "source": "https://github.com/nette/latte/tree/v3.0.16"
88
88
  },
89
89
  "install-path": "../latte/latte"
90
90
  }
@@ -3,7 +3,7 @@
3
3
  'name' => '__root__',
4
4
  'pretty_version' => 'dev-main',
5
5
  'version' => 'dev-main',
6
- 'reference' => '202e2f59016da40ea7a1d08e72c8efcebaf9d61c',
6
+ 'reference' => '403b80671511fbd5ac645fa46031fe26ae02ff09',
7
7
  'type' => 'library',
8
8
  'install_path' => __DIR__ . '/../../',
9
9
  'aliases' => array(),
@@ -13,16 +13,16 @@
13
13
  '__root__' => array(
14
14
  'pretty_version' => 'dev-main',
15
15
  'version' => 'dev-main',
16
- 'reference' => '202e2f59016da40ea7a1d08e72c8efcebaf9d61c',
16
+ 'reference' => '403b80671511fbd5ac645fa46031fe26ae02ff09',
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.0.12',
24
- 'version' => '3.0.12.0',
25
- 'reference' => 'af6fc60e7a28cbc1717b8185ef04d36fd69f8711',
23
+ 'pretty_version' => 'v3.0.16',
24
+ 'version' => '3.0.16.0',
25
+ 'reference' => '0984953d961123075e95a9fa33ec4c4f4de266d2',
26
26
  'type' => 'library',
27
27
  'install_path' => __DIR__ . '/../latte/latte',
28
28
  'aliases' => array(),
@@ -84,7 +84,9 @@ final class Escaper
84
84
  public function __construct(
85
85
  private string $contentType,
86
86
  ) {
87
- $this->state = $this->contentType;
87
+ $this->state = in_array($contentType, [ContentType::Html, ContentType::Xml], true)
88
+ ? self::HtmlText
89
+ : $contentType;
88
90
  }
89
91
 
90
92
 
@@ -120,7 +122,7 @@ final class Escaper
120
122
  if ($el->is('script')) {
121
123
  $type = $el->getAttribute('type');
122
124
  if ($type === true || $type === null
123
- || is_string($type) && preg_match('#((application|text)/(((x-)?java|ecma|j|live)script|json)|text/plain|module|importmap|)$#Ai', $type)
125
+ || is_string($type) && preg_match('#((application|text)/(((x-)?java|ecma|j|live)script|json)|application/.+\+json|text/plain|module|importmap|)$#Ai', $type)
124
126
  ) {
125
127
  $this->subType = self::JavaScript;
126
128
 
@@ -146,6 +148,13 @@ final class Escaper
146
148
  }
147
149
 
148
150
 
151
+ public function enterHtmlRaw(string $subType): void
152
+ {
153
+ $this->state = self::HtmlRawText;
154
+ $this->subType = $subType;
155
+ }
156
+
157
+
149
158
  public function enterHtmlAttribute(?string $name = null): void
150
159
  {
151
160
  $this->state = self::HtmlAttribute;
@@ -34,7 +34,7 @@ class FilterNode extends Node
34
34
 
35
35
  public function printSimple(PrintContext $context, string $expr): string
36
36
  {
37
- return '($this->filters->' . $this->name . ')('
37
+ return '($this->filters->' . $context->objectProperty($this->name) . ')('
38
38
  . $expr
39
39
  . ($this->args ? ', ' . $context->implode($this->args) : '')
40
40
  . ')';
@@ -51,12 +51,12 @@ class ModifierNode extends Node
51
51
  $check = $this->check;
52
52
  foreach ($this->filters as $filter) {
53
53
  $name = $filter->name->name;
54
- if (['nocheck' => 1, 'noCheck' => 1][$name] ?? null) {
54
+ if ($name === 'nocheck' || $name === 'noCheck') {
55
55
  $check = false;
56
56
  } elseif ($name === 'noescape') {
57
57
  $escape = false;
58
58
  } else {
59
- if (['datastream' => 1, 'dataStream' => 1][$name] ?? null) {
59
+ if ($name === 'datastream' || $name === 'dataStream') {
60
60
  $check = false;
61
61
  }
62
62
  $expr = $filter->printSimple($context, $expr);
@@ -20,31 +20,21 @@ class NameNode extends Node
20
20
  KindNormal = 1,
21
21
  KindFullyQualified = 2;
22
22
 
23
- /** @var string[] */
24
- public array $parts;
25
-
26
23
 
27
24
  public function __construct(
28
- string|array $name,
25
+ public string $name,
29
26
  public int $kind = self::KindNormal,
30
27
  public ?Position $position = null,
31
28
  ) {
32
- if ($name === '' || $name === []) {
29
+ if ($name === '') {
33
30
  throw new \InvalidArgumentException('Name cannot be empty');
34
-
35
- } elseif (is_string($name)) {
36
- if (str_starts_with($name, '\\')) {
37
- $this->kind = self::KindFullyQualified;
38
- $name = substr($name, 1);
39
- } elseif (str_starts_with($name, 'namespace\\')) {
40
- throw new \InvalidArgumentException('Relative name is not supported');
41
- } else {
42
- $this->kind = self::KindNormal;
43
- }
44
- $this->parts = explode('\\', $name);
45
-
31
+ } elseif (str_starts_with($name, 'namespace\\')) {
32
+ throw new \InvalidArgumentException('Relative name is not supported');
33
+ } elseif (str_starts_with($name, '\\')) {
34
+ $this->kind = self::KindFullyQualified;
35
+ $this->name = substr($name, 1);
46
36
  } else {
47
- $this->parts = $name;
37
+ $this->kind = self::KindNormal;
48
38
  }
49
39
  }
50
40
 
@@ -62,7 +52,7 @@ class NameNode extends Node
62
52
  'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while', 'xor', 'yield',
63
53
  'parent', 'self', 'mixed', 'void', 'enum', // extra
64
54
  ]);
65
- return count($this->parts) === 1 && isset($keywords[strtolower($this->parts[0])]);
55
+ return isset($keywords[strtolower($this->name)]);
66
56
  }
67
57
 
68
58
 
@@ -74,7 +64,7 @@ class NameNode extends Node
74
64
 
75
65
  public function __toString(): string
76
66
  {
77
- return implode('\\', $this->parts);
67
+ return $this->name;
78
68
  }
79
69
 
80
70
 
@@ -84,7 +74,7 @@ class NameNode extends Node
84
74
  self::KindNormal => $this->isKeyword() ? 'namespace\\' : '',
85
75
  self::KindFullyQualified => '\\',
86
76
  };
87
- return $prefix . implode('\\', $this->parts);
77
+ return $prefix . $this->name;
88
78
  }
89
79
 
90
80
 
@@ -102,7 +102,7 @@ final class PrintContext
102
102
  function ($m) use ($args) {
103
103
  [, $pos, $fn, $var] = $m;
104
104
  $var = substr($var, 1, -1);
105
- /** @var Nodes\FilterNode[] $args */
105
+ /** @var Nodes\ModifierNode[] $args */
106
106
  return match ($fn) {
107
107
  'modify' => $args[$pos]->printSimple($this, $var),
108
108
  'modifyContent' => $args[$pos]->printContentAware($this, $var),
@@ -82,8 +82,8 @@ final class TagLexer
82
82
  {
83
83
  preg_match(
84
84
  $colon
85
- ? '~ ( [./@_a-z0-9#!-] | :(?!:) | \{\$ [_a-z0-9\[\]()>-]+ })++ (?=\s+[!"\'$(\[{,\\|\~\w-] | [,|] | \s*$) ~xAi'
86
- : '~ ( [./@_a-z0-9#!-] | \{\$ [_a-z0-9\[\]()>-]+ })++ (?=\s+[!"\'$(\[{,\\|\~\w-] | [,:|] | \s*$) ~xAi',
85
+ ? '~ ( [./@_a-z0-9#!-] | :(?!:) | \{\$ [_a-z0-9\[\]()>-]+ })++ (?=\s+[!"\'$(\[{,\\\\|\~\w-] | [,|] | \s*$) ~xAi'
86
+ : '~ ( [./@_a-z0-9#!-] | \{\$ [_a-z0-9\[\]()>-]+ })++ (?=\s+[!"\'$(\[{,\\\\|\~\w-] | [,:|] | \s*$) ~xAi',
87
87
  $input,
88
88
  $match,
89
89
  offset: $position->offset - $offsetDelta,