litestar-vite 0.1.22__py3-none-any.whl → 0.2.1__py3-none-any.whl

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.

Potentially problematic release.


This version of litestar-vite might be problematic. Click here for more details.

litestar_vite/loader.py CHANGED
@@ -1,17 +1,15 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ from functools import cached_property
4
5
  from pathlib import Path
5
- from typing import TYPE_CHECKING, Any, ClassVar, TypeVar
6
+ from textwrap import dedent
7
+ from typing import TYPE_CHECKING, Any, ClassVar
6
8
  from urllib.parse import urljoin
7
9
 
8
- from litestar.template import TemplateEngineProtocol
9
-
10
10
  if TYPE_CHECKING:
11
11
  from litestar_vite.config import ViteConfig
12
12
 
13
- T = TypeVar("T", bound=TemplateEngineProtocol)
14
-
15
13
 
16
14
  class ViteAssetLoader:
17
15
  """Vite manifest loader.
@@ -24,6 +22,7 @@ class ViteAssetLoader:
24
22
  def __init__(self, config: ViteConfig) -> None:
25
23
  self._config = config
26
24
  self._manifest: dict[str, Any] = {}
25
+ self._manifest_content: str = ""
27
26
  self._vite_base_path: str | None = None
28
27
 
29
28
  @classmethod
@@ -34,6 +33,12 @@ class ViteAssetLoader:
34
33
  cls._instance.parse_manifest()
35
34
  return cls._instance
36
35
 
36
+ @cached_property
37
+ def version_id(self) -> str:
38
+ if self._manifest_content != "":
39
+ return str(hash(self.manifest_content))
40
+ return "1.0"
41
+
37
42
  def parse_manifest(self) -> None:
38
43
  """Read and parse the Vite manifest file.
39
44
 
@@ -76,11 +81,11 @@ class ViteAssetLoader:
76
81
  try:
77
82
  if manifest_path.exists():
78
83
  with manifest_path.open() as manifest_file:
79
- manifest_content = manifest_file.read()
80
- self._manifest = json.loads(manifest_content)
84
+ self.manifest_content = manifest_file.read()
85
+ self._manifest = json.loads(self.manifest_content)
81
86
  else:
82
87
  self._manifest = {}
83
- except Exception as exc: # noqa: BLE001
88
+ except Exception as exc:
84
89
  msg = "There was an issue reading the Vite manifest file at %s. Did you forget to build your assets?"
85
90
  raise RuntimeError(
86
91
  msg,
@@ -111,7 +116,7 @@ class ViteAssetLoader:
111
116
  str: The script tag or an empty string.
112
117
  """
113
118
  if self._config.is_react and self._config.hot_reload and self._config.dev_mode:
114
- return f"""
119
+ return dedent(f"""
115
120
  <script type="module">
116
121
  import RefreshRuntime from '{self._vite_server_url()}@react-refresh'
117
122
  RefreshRuntime.injectIntoGlobalHook(window)
@@ -119,7 +124,7 @@ class ViteAssetLoader:
119
124
  window.$RefreshSig$ = () => (type) => type
120
125
  window.__vite_plugin_react_preamble_installed__=true
121
126
  </script>
122
- """
127
+ """)
123
128
  return ""
124
129
 
125
130
  def generate_asset_tags(self, path: str | list[str], scripts_attrs: dict[str, str] | None = None) -> str:
@@ -133,7 +138,9 @@ class ViteAssetLoader:
133
138
  if self._config.hot_reload and self._config.dev_mode:
134
139
  return "".join(
135
140
  [
136
- self._script_tag(
141
+ self._style_tag(self._vite_server_url(p))
142
+ if p.endswith(".css")
143
+ else self._script_tag(
137
144
  self._vite_server_url(p),
138
145
  {"type": "module", "async": "", "defer": ""},
139
146
  )
@@ -142,7 +149,7 @@ class ViteAssetLoader:
142
149
  )
143
150
 
144
151
  if any(p for p in path if p not in self._manifest):
145
- msg = "Cannot find %s in Vite manifest at %s. Did you forget to build your assets?"
152
+ msg = "Cannot find %s in Vite manifest at %s. Did you forget to build your assets after an update?"
146
153
  raise RuntimeError(
147
154
  msg,
148
155
  path,
@@ -150,30 +157,33 @@ class ViteAssetLoader:
150
157
  )
151
158
 
152
159
  tags: list[str] = []
153
- for p in path:
154
- manifest_entry: dict = self._manifest[p]
160
+ manifest_entry: dict[str, Any] = {}
161
+ manifest_entry.update({p: self._manifest[p] for p in path})
155
162
  if not scripts_attrs:
156
163
  scripts_attrs = {"type": "module", "async": "", "defer": ""}
157
-
158
- # Add dependent CSS
159
- if "css" in manifest_entry:
160
- tags.extend(
161
- self._style_tag(urljoin(self._config.asset_url, css_path)) for css_path in manifest_entry.get("css", {})
162
- )
163
- # Add dependent "vendor"
164
- if "imports" in manifest_entry:
165
- tags.extend(
166
- self.generate_asset_tags(vendor_path, scripts_attrs=scripts_attrs)
167
- for vendor_path in manifest_entry.get("imports", {})
168
- )
169
- # Add the script by itself
170
- tags.append(
171
- self._script_tag(
172
- urljoin(self._config.asset_url, manifest_entry["file"]),
173
- attrs=scripts_attrs,
174
- ),
175
- )
176
-
164
+ for manifest in manifest_entry.values():
165
+ if "css" in manifest:
166
+ tags.extend(
167
+ self._style_tag(urljoin(self._config.asset_url, css_path)) for css_path in manifest.get("css", {})
168
+ )
169
+ # Add dependent "vendor"
170
+ if "imports" in manifest:
171
+ tags.extend(
172
+ self.generate_asset_tags(vendor_path, scripts_attrs=scripts_attrs)
173
+ for vendor_path in manifest.get("imports", {})
174
+ )
175
+ # Add the script by itself
176
+ if manifest.get("file").endswith(".css"):
177
+ tags.append(
178
+ self._style_tag(urljoin(self._config.asset_url, manifest["file"])),
179
+ )
180
+ else:
181
+ tags.append(
182
+ self._script_tag(
183
+ urljoin(self._config.asset_url, manifest["file"]),
184
+ attrs=scripts_attrs,
185
+ ),
186
+ )
177
187
  return "".join(tags)
178
188
 
179
189
  def _vite_server_url(self, path: str | None = None) -> str:
@@ -193,7 +203,9 @@ class ViteAssetLoader:
193
203
 
194
204
  def _script_tag(self, src: str, attrs: dict[str, str] | None = None) -> str:
195
205
  """Generate an HTML script tag."""
196
- attrs_str = " ".join([f'{key}="{value}"' for key, value in attrs.items()]) if attrs is not None else ""
206
+ if attrs is None:
207
+ attrs = {}
208
+ attrs_str = " ".join([f'{key}="{value}"' for key, value in attrs.items()])
197
209
  return f'<script {attrs_str} src="{src}"></script>'
198
210
 
199
211
  def _style_tag(self, href: str) -> str:
litestar_vite/plugin.py CHANGED
@@ -6,7 +6,9 @@ from pathlib import Path
6
6
  from typing import TYPE_CHECKING, Iterator, cast
7
7
 
8
8
  from litestar.plugins import CLIPlugin, InitPluginProtocol
9
- from litestar.static_files import create_static_files_router
9
+ from litestar.static_files import (
10
+ create_static_files_router, # pyright: ignore[reportUnknownVariableType]
11
+ )
10
12
 
11
13
  from litestar_vite.config import ViteConfig
12
14
 
@@ -15,6 +17,9 @@ if TYPE_CHECKING:
15
17
  from litestar import Litestar
16
18
  from litestar.config.app import AppConfig
17
19
 
20
+ from litestar_vite.config import ViteTemplateConfig
21
+ from litestar_vite.template_engine import ViteTemplateEngine
22
+
18
23
 
19
24
  def set_environment(config: ViteConfig) -> None:
20
25
  """Configure environment for easier integration"""
@@ -23,6 +28,7 @@ def set_environment(config: ViteConfig) -> None:
23
28
  os.environ.setdefault("VITE_PORT", str(config.port))
24
29
  os.environ.setdefault("VITE_HOST", config.host)
25
30
  os.environ.setdefault("VITE_PROTOCOL", config.protocol)
31
+ os.environ.setdefault("APP_URL", "http://localhost:8000")
26
32
  if config.dev_mode:
27
33
  os.environ.setdefault("VITE_DEV_MODE", str(config.dev_mode))
28
34
 
@@ -46,11 +52,21 @@ class VitePlugin(InitPluginProtocol, CLIPlugin):
46
52
  def config(self) -> ViteConfig:
47
53
  return self._config
48
54
 
55
+ @property
56
+ def template_config(self) -> ViteTemplateConfig[ViteTemplateEngine]:
57
+ from litestar_vite.config import ViteTemplateConfig
58
+ from litestar_vite.template_engine import ViteTemplateEngine
59
+
60
+ return ViteTemplateConfig[ViteTemplateEngine](
61
+ engine=ViteTemplateEngine,
62
+ config=self._config,
63
+ directory=self._config.template_dir,
64
+ )
65
+
49
66
  def on_cli_init(self, cli: Group) -> None:
50
67
  from litestar_vite.cli import vite_group
51
68
 
52
69
  cli.add_command(vite_group)
53
- return super().on_cli_init(cli)
54
70
 
55
71
  def on_app_init(self, app_config: AppConfig) -> AppConfig:
56
72
  """Configure application for use with Vite.
@@ -59,15 +75,8 @@ class VitePlugin(InitPluginProtocol, CLIPlugin):
59
75
  app_config: The :class:`AppConfig <.config.app.AppConfig>` instance.
60
76
  """
61
77
 
62
- from litestar_vite.config import ViteTemplateConfig
63
- from litestar_vite.template_engine import ViteTemplateEngine
64
-
65
78
  if self._config.template_dir is not None:
66
- app_config.template_config = ViteTemplateConfig[ViteTemplateEngine]( # type: ignore[assignment]
67
- engine=ViteTemplateEngine,
68
- config=self._config,
69
- directory=self._config.template_dir,
70
- )
79
+ app_config.template_config = self.template_config
71
80
 
72
81
  if self._config.set_static_folders:
73
82
  static_dirs = [Path(self._config.bundle_dir), Path(self._config.resource_dir)]
@@ -115,7 +124,7 @@ class VitePlugin(InitPluginProtocol, CLIPlugin):
115
124
  yield
116
125
  finally:
117
126
  if vite_thread.is_alive():
118
- vite_thread.join()
127
+ vite_thread.join(timeout=5)
119
128
  console.print("[yellow]Vite process stopped.[/]")
120
129
 
121
130
  else:
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import TYPE_CHECKING, TypeVar
3
+ from typing import TYPE_CHECKING, Any, Mapping, TypeVar
4
4
 
5
5
  import markupsafe
6
6
  from litestar.contrib.jinja import JinjaTemplateEngine
@@ -12,10 +12,11 @@ if TYPE_CHECKING:
12
12
  from pathlib import Path
13
13
 
14
14
  from jinja2 import Environment
15
+ from jinja2 import Template as JinjaTemplate
15
16
 
16
17
  from litestar_vite.config import ViteConfig
17
18
 
18
- T = TypeVar("T", bound=TemplateEngineProtocol)
19
+ T = TypeVar("T", bound=TemplateEngineProtocol["JinjaTemplate", Mapping[str, Any]])
19
20
 
20
21
 
21
22
  class ViteTemplateEngine(JinjaTemplateEngine):
@@ -39,9 +40,8 @@ class ViteTemplateEngine(JinjaTemplateEngine):
39
40
  msg = "Please configure the `ViteConfig` instance."
40
41
  raise ValueError(msg)
41
42
  self.config = config
42
-
43
43
  self.asset_loader = ViteAssetLoader.initialize_loader(config=self.config)
44
- self.engine.globals.update({"vite_hmr": self.get_hmr_client, "vite": self.get_asset_tag})
44
+ self.engine.globals.update({"vite_hmr": self.get_hmr_client, "vite": self.get_asset_tag}) # pyright: ignore[reportCallIssue,reportArgumentType]
45
45
 
46
46
  def get_hmr_client(self) -> markupsafe.Markup:
47
47
  """Generate the script tag for the Vite WS client for HMR.
@@ -62,6 +62,7 @@ class ViteTemplateEngine(JinjaTemplateEngine):
62
62
  self,
63
63
  path: str | list[str],
64
64
  scripts_attrs: dict[str, str] | None = None,
65
+ **_: Any,
65
66
  ) -> markupsafe.Markup:
66
67
  """Generate all assets include tags for the file in argument.
67
68
 
@@ -75,6 +76,7 @@ class ViteTemplateEngine(JinjaTemplateEngine):
75
76
  context: The template context.
76
77
  path: Path to a Vite asset to include.
77
78
  scripts_attrs: script attributes
79
+ _: extra args to satisfy type checking
78
80
 
79
81
  Keyword Arguments:
80
82
  scripts_attrs {Optional[Dict[str, str]]}: Override attributes added to scripts tags. (default: {None})
@@ -82,4 +84,21 @@ class ViteTemplateEngine(JinjaTemplateEngine):
82
84
  Returns:
83
85
  str: All tags to import this asset in your HTML page.
84
86
  """
85
- return markupsafe.Markup(self.asset_loader.generate_asset_tags(path, scripts_attrs=scripts_attrs))
87
+ if isinstance(path, str):
88
+ path = [path]
89
+ return markupsafe.Markup(
90
+ "".join([self.asset_loader.generate_asset_tags(p, scripts_attrs=scripts_attrs) for p in path]),
91
+ )
92
+
93
+ @classmethod
94
+ def from_environment(cls, config: ViteConfig, jinja_environment: Environment) -> ViteTemplateEngine: # type: ignore[override]
95
+ """Create a JinjaTemplateEngine from an existing jinja Environment instance.
96
+
97
+ Args:
98
+ config: Vite config
99
+ jinja_environment (jinja2.environment.Environment): A jinja Environment instance.
100
+
101
+ Returns:
102
+ JinjaTemplateEngine instance
103
+ """
104
+ return cls(directory=None, config=config, engine_instance=jinja_environment)
@@ -1,18 +1,16 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <!--IE compatibility-->
6
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
- <meta
8
- name="viewport"
9
- content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
10
- />
11
- </head>
12
3
 
13
- <body>
14
- <div id="app"></div>
15
- {{ vite_hmr() }}
16
- {{ vite('resources/main.ts') }}
17
- </body>
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <!--IE compatibility-->
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
9
+ </head>
10
+
11
+ <body>
12
+ {{ vite_hmr() }}
13
+ {{ vite('resources/main.ts') }}
14
+ </body>
15
+
18
16
  </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: litestar-vite
3
- Version: 0.1.22
3
+ Version: 0.2.1
4
4
  Summary: Vite plugin for Litestar
5
5
  Project-URL: Changelog, https://cofin.github.io/litestar-vite/latest/changelog
6
6
  Project-URL: Discord, https://discord.gg/X3FJqy8d2j
@@ -30,7 +30,7 @@ Classifier: Topic :: Database :: Database Engines/Servers
30
30
  Classifier: Topic :: Software Development
31
31
  Classifier: Typing :: Typed
32
32
  Requires-Python: >=3.8
33
- Requires-Dist: litestar[jinja]>=2.4.0
33
+ Requires-Dist: litestar[jinja]>=2.7.0
34
34
  Provides-Extra: nodeenv
35
35
  Requires-Dist: nodeenv; extra == 'nodeenv'
36
36
  Description-Content-Type: text/markdown
@@ -70,19 +70,9 @@ class WebController(Controller):
70
70
  return Template(template_name="index.html.j2")
71
71
 
72
72
 
73
- vite = VitePlugin(
74
- config=ViteConfig(
75
- bundle_dir=Path("./public"),
76
- resource_dir=Path("./resources"),
77
- template_dir=Path("./templates"),
78
- # Should be False when in production
79
- dev_mode=True,
80
- hot_reload=True, # Websocket HMR asset reloading is enabled when true.
81
- ),
82
- )
73
+ vite = VitePlugin(config=ViteConfig(template_dir='templates/'))
83
74
  app = Litestar(plugins=[vite], route_handlers=[WebController])
84
75
 
85
-
86
76
  ```
87
77
 
88
78
  Create a template to serve the application in `./templates/index.html.h2`:
@@ -0,0 +1,30 @@
1
+ litestar_vite/__init__.py,sha256=QEZzbM6LXuSm52rzpzcw3OihR7xxoPCZ6jhWtZH2dZc,402
2
+ litestar_vite/__metadata__.py,sha256=Eml1c9xezV-GSodmysksrT8jPWqE__x0ENO1wM5g6q0,319
3
+ litestar_vite/cli.py,sha256=foXJ-xW1bvUEsT7nPo1hbN0FLaDzHWPG4zpmqN__rY0,10976
4
+ litestar_vite/commands.py,sha256=sfTdFfMcDxnW3_tbmIIBjpHmNdQYKHjSguGxXNP8SVw,4440
5
+ litestar_vite/config.py,sha256=J5U0hBa_cD7lm15lg24QqMy3hsZ_1QIIETxwaNZIm84,7523
6
+ litestar_vite/loader.py,sha256=USrzNDppXgXLvW5WCuIgKPuM6MlECNIssnkwb_p-E8s,8117
7
+ litestar_vite/plugin.py,sha256=2rwlumH3CFozb_7NGOFwn20BMZ_4JTNHiWh0oyaN-gc,5131
8
+ litestar_vite/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ litestar_vite/template_engine.py,sha256=ffC4KPtUUNkuC0tJ0bD1Bu7c8lE33vKP0US1fWUYnO8,3853
10
+ litestar_vite/inertia/__init__.py,sha256=PMOon8tag-20riAkHH3U4VLk7NBwt9lHsOHHSKMQHJQ,695
11
+ litestar_vite/inertia/_utils.py,sha256=IAsK4Nrjx2dr9z7rXBLHAu_FG8GvCpo_fpywY7RHwl0,1932
12
+ litestar_vite/inertia/config.py,sha256=6cYR4m5oGsJnL_rH6Dt8bQJ804Oq6knj6qDsCVUqNsI,942
13
+ litestar_vite/inertia/exception_handler.py,sha256=qHE9ubAGX-0nUS-yNUKq3YT_OxyV_5JZYqfnuFcxzN4,4475
14
+ litestar_vite/inertia/middleware.py,sha256=9ADCoCNdQNLDYhQ6ctY4Lo92E_EtgBPqIo2SdOJz9zU,1766
15
+ litestar_vite/inertia/plugin.py,sha256=ebAG9XnDBahttuc7WIUgBd3o_Ys8MdPS273LPNs5H8A,2344
16
+ litestar_vite/inertia/request.py,sha256=UReg7_ks6MGa2HbIpDsD2DochckbLA-c-k8Er2mHkVA,3509
17
+ litestar_vite/inertia/response.py,sha256=lEGqUx5RVDCexRxZ1Fz4ms0UmIfkNKEvcnrCNRF07Lk,14685
18
+ litestar_vite/inertia/routes.py,sha256=QksJm2RUfL-WbuhOieYnPXXWO5GYnPtmsYEm6Ef8Yeo,1782
19
+ litestar_vite/inertia/types.py,sha256=tLp0pm1N__hcWC875khf6wH1nuFlKS9-VjDqgsRkXnw,702
20
+ litestar_vite/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ litestar_vite/templates/index.html.j2,sha256=Xue1cTl6piEOZkW3UG68SnW80NeL9PxaOp-Xr23kpr4,322
22
+ litestar_vite/templates/main.ts.j2,sha256=Nzr5m_hXMAjeDL_4yQNP3DMCf7Blh3dwg5m-67GJVbY,22
23
+ litestar_vite/templates/package.json.j2,sha256=0JWgdTuaSZ25EmCltF_zbqDdpxfvCLeYuzBjXrziXNw,299
24
+ litestar_vite/templates/styles.css.j2,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ litestar_vite/templates/tsconfig.json.j2,sha256=q1REIuVyXUHCy4Zi2kgTkmrhdT98vyY89k-WTrImOj8,843
26
+ litestar_vite/templates/vite.config.ts.j2,sha256=FZ4OJaB8Kjby_nlx4_LCP8eCe1LRi8kW2GspCiVMfDY,1115
27
+ litestar_vite-0.2.1.dist-info/METADATA,sha256=L3hlW_jEuEGW8mJ0o84Dn2fIWsqXd_h5lZy9hoK4krM,6180
28
+ litestar_vite-0.2.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
29
+ litestar_vite-0.2.1.dist-info/licenses/LICENSE,sha256=HeTiEfEgvroUXZe_xAmYHxtTBgw--mbXyZLsWDYabHc,1069
30
+ litestar_vite-0.2.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.22.3
2
+ Generator: hatchling 1.25.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,20 +0,0 @@
1
- litestar_vite/__init__.py,sha256=9X3i67Q8DJN2lQYAMa9NSPTZGzHASGn8X8yeWJqBvWg,357
2
- litestar_vite/__metadata__.py,sha256=Eml1c9xezV-GSodmysksrT8jPWqE__x0ENO1wM5g6q0,319
3
- litestar_vite/cli.py,sha256=BsYvMPcE8rFZGO8xnEwEXtrXhILgizN3JDVO_KH_FE8,9618
4
- litestar_vite/commands.py,sha256=S2oY1z1IMFPG58qD5FzDF4hjZvoKycj3Hl9XeSw3_hM,4236
5
- litestar_vite/config.py,sha256=uBbdV0INcChMOoGzVf60baovtuwkUkqkbVhwTFFw804,6978
6
- litestar_vite/loader.py,sha256=cxDwrViZJR2F7H6OTkZLwQhG0uw9VadUh-vxc91tJZs,7481
7
- litestar_vite/plugin.py,sha256=pw9ianec85DdXWnBFvhcZp7Ag4lu-3MIVP8mFzOFOg8,4843
8
- litestar_vite/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- litestar_vite/template_engine.py,sha256=UIxphAoAKrAcpAuV_CJmZgsN9GOFfqq0azQdId6yofg,2995
10
- litestar_vite/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- litestar_vite/templates/index.html.j2,sha256=GobZbXgrlFRf3sCoS-416iWfV8lBP_v3AXPQX_QVzZA,381
12
- litestar_vite/templates/main.ts.j2,sha256=Nzr5m_hXMAjeDL_4yQNP3DMCf7Blh3dwg5m-67GJVbY,22
13
- litestar_vite/templates/package.json.j2,sha256=0JWgdTuaSZ25EmCltF_zbqDdpxfvCLeYuzBjXrziXNw,299
14
- litestar_vite/templates/styles.css.j2,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- litestar_vite/templates/tsconfig.json.j2,sha256=q1REIuVyXUHCy4Zi2kgTkmrhdT98vyY89k-WTrImOj8,843
16
- litestar_vite/templates/vite.config.ts.j2,sha256=FZ4OJaB8Kjby_nlx4_LCP8eCe1LRi8kW2GspCiVMfDY,1115
17
- litestar_vite-0.1.22.dist-info/METADATA,sha256=aSQ7qnkNkw39YYPUf2vaNRqjowtw2ub6IzmfT_ZohNs,6437
18
- litestar_vite-0.1.22.dist-info/WHEEL,sha256=bq9SyP5NxIRA9EpQgMCd-9RmPHWvbH-4lTDGwxgIR64,87
19
- litestar_vite-0.1.22.dist-info/licenses/LICENSE,sha256=HeTiEfEgvroUXZe_xAmYHxtTBgw--mbXyZLsWDYabHc,1069
20
- litestar_vite-0.1.22.dist-info/RECORD,,