zrb 0.0.41__py3-none-any.whl → 0.0.43__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.
Files changed (22) hide show
  1. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py +2 -1
  2. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/build-frontend.sh +1 -1
  3. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/frontend.py +17 -2
  4. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app.py +7 -17
  5. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_lifespan.py +29 -0
  6. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_state.py +8 -0
  7. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/frontend_index.py +9 -0
  8. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/package.json +1 -0
  9. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+layout.js +2 -1
  10. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+layout.svelte +6 -0
  11. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/about/+page.svelte +2 -0
  12. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/+page.js +6 -0
  13. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/+page.svelte +9 -0
  14. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/page.js +0 -0
  15. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/svelte.config.js +11 -14
  16. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/main.py +0 -16
  17. zrb/task/base_task.py +11 -6
  18. {zrb-0.0.41.dist-info → zrb-0.0.43.dist-info}/METADATA +1 -1
  19. {zrb-0.0.41.dist-info → zrb-0.0.43.dist-info}/RECORD +22 -15
  20. {zrb-0.0.41.dist-info → zrb-0.0.43.dist-info}/LICENSE +0 -0
  21. {zrb-0.0.41.dist-info → zrb-0.0.43.dist-info}/WHEEL +0 -0
  22. {zrb-0.0.41.dist-info → zrb-0.0.43.dist-info}/entry_points.txt +0 -0
@@ -13,6 +13,7 @@ RESOURCE_DIR = os.path.join(PROJECT_DIR, 'src', 'kebab-app-name')
13
13
  DEPLOYMENT_DIR = os.path.join(RESOURCE_DIR, 'deployment')
14
14
  APP_DIR = os.path.join(RESOURCE_DIR, 'src')
15
15
  APP_FRONTEND_DIR = os.path.join(APP_DIR, 'frontend')
16
+ APP_FRONTEND_BUILD_DIR = os.path.join(APP_FRONTEND_DIR, 'build')
16
17
  TEMPLATE_ENV_FILE_NAME = os.path.join(APP_DIR, 'template.env')
17
18
  SKIP_CONTAINER_EXECUTION = '{{not input.local_snake_app_name}}'
18
19
  SKIP_SUPPORT_CONTAINER_EXECUTION = ' '.join([
@@ -113,7 +114,7 @@ local_input = BoolInput(
113
114
  mode_input = ChoiceInput(
114
115
  name='kebab-app-name-mode',
115
116
  description='"kebab-app-name" mode',
116
- prompt='"kebab-app-name" mode',
117
+ prompt='Do you want to run "kebab-app-name" as monolith or microservices?',
117
118
  choices=['monolith', 'microservices'],
118
119
  default='monolith'
119
120
  )
@@ -1,2 +1,2 @@
1
1
  npm install --save
2
- npm run build
2
+ npm run build:watch
@@ -1,12 +1,26 @@
1
- from zrb import CmdTask, runner
1
+ from typing import Any
2
+ from zrb import CmdTask, Task, python_task, runner
2
3
  from zrb.builtin._group import project_group
3
- from ._common import APP_FRONTEND_DIR, CURRENT_DIR
4
+ from ._common import APP_FRONTEND_DIR, APP_FRONTEND_BUILD_DIR, CURRENT_DIR
5
+ import asyncio
4
6
  import os
5
7
 
6
8
  ###############################################################################
7
9
  # Task Definitions
8
10
  ###############################################################################
9
11
 
12
+
13
+ @python_task(
14
+ name='check-kebab-app-name-frontend-build',
15
+ retry=0,
16
+ )
17
+ async def check_frontend_build(*args: str, **kwargs: Any):
18
+ while not os.path.isdir(APP_FRONTEND_BUILD_DIR):
19
+ await asyncio.sleep(0.1)
20
+ task: Task = kwargs.get('_task')
21
+ task.print_out(f'Frontend built: {APP_FRONTEND_BUILD_DIR}')
22
+
23
+
10
24
  build_snake_app_name_frontend = CmdTask(
11
25
  icon='🚤',
12
26
  name='build-kebab-app-name-frontend',
@@ -14,5 +28,6 @@ build_snake_app_name_frontend = CmdTask(
14
28
  group=project_group,
15
29
  cwd=APP_FRONTEND_DIR,
16
30
  cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'build-frontend.sh'),
31
+ checkers=[check_frontend_build]
17
32
  )
18
33
  runner.register(build_snake_app_name_frontend)
@@ -6,28 +6,18 @@ from config import (
6
6
  cors_allow_methods, cors_allow_origin_regex, cors_allow_origins,
7
7
  cors_expose_headers, cors_max_age
8
8
  )
9
- from component.app_state import app_state
10
- from starlette.requests import Request
11
- from starlette.responses import FileResponse
12
- import os
9
+ from component.app_lifespan import app_state
10
+ from component.app_lifespan import app_lifespan
11
+ from component.frontend_index import frontend_index_response
13
12
 
14
- app = FastAPI()
13
+ app = FastAPI(lifespan=app_lifespan)
15
14
 
16
15
  if app_enable_frontend:
17
16
  @app.middleware("http")
18
- async def static_file_middleware(request: Request, call_next):
19
- build_path = os.path.join('frontend', 'build')
20
- request_url = request.url.path.strip('/')
21
- file_path = os.path.join(build_path, request_url)
22
- # File exists, serve it
23
- if os.path.isfile(file_path):
24
- return FileResponse(file_path)
25
- # File doesn't exists, try to look for index.html
26
- file_path = os.path.join(file_path, 'index.html')
27
- if os.path.isfile(file_path):
28
- return FileResponse(file_path)
29
- # Nothing exists, this must be served programmatically
17
+ async def catch_all(request, call_next):
30
18
  response = await call_next(request)
19
+ if response.status_code == 404:
20
+ return frontend_index_response
31
21
  return response
32
22
 
33
23
 
@@ -0,0 +1,29 @@
1
+ from fastapi import FastAPI
2
+ from fastapi.staticfiles import StaticFiles
3
+ from config import (
4
+ app_name, app_enable_message_consumer, app_enable_frontend,
5
+ )
6
+ from component.app_state import app_state, set_not_ready_on_error
7
+ from component.messagebus import consumer
8
+ from component.log import logger
9
+ from helper.async_task import create_task
10
+ from contextlib import asynccontextmanager
11
+ import os
12
+
13
+
14
+ @asynccontextmanager
15
+ async def app_lifespan(app: FastAPI):
16
+ logger.info(f'{app_name} started')
17
+ app_state.set_liveness(True)
18
+ if app_enable_message_consumer:
19
+ create_task(consumer.run(), on_error=set_not_ready_on_error)
20
+ if app_enable_frontend:
21
+ build_path = os.path.join('frontend', 'build')
22
+ app.mount(
23
+ path='',
24
+ app=StaticFiles(directory=build_path, html=True),
25
+ name='frontend'
26
+ )
27
+ app_state.set_readiness(True)
28
+ yield
29
+ logger.info(f'{app_name} closed')
@@ -1,3 +1,6 @@
1
+ from component.log import logger
2
+
3
+
1
4
  class AppState():
2
5
  __instance = None
3
6
 
@@ -24,3 +27,8 @@ class AppState():
24
27
 
25
28
 
26
29
  app_state = AppState()
30
+
31
+
32
+ def set_not_ready_on_error(exception: Exception):
33
+ logger.critical(exception)
34
+ app_state.set_readiness(False)
@@ -0,0 +1,9 @@
1
+ from fastapi.responses import HTMLResponse
2
+ import os
3
+
4
+ frontend_index_path = os.path.join('frontend', 'build', 'index.html')
5
+ with open(frontend_index_path, "r") as f:
6
+ frontend_index_content = f.read()
7
+ frontend_index_response = HTMLResponse(
8
+ content=frontend_index_content, status_code=200
9
+ )
@@ -5,6 +5,7 @@
5
5
  "scripts": {
6
6
  "dev": "vite dev",
7
7
  "build": "vite build",
8
+ "build:watch": "vite build --watch",
8
9
  "preview": "vite preview",
9
10
  "test": "playwright test",
10
11
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
@@ -1 +1,2 @@
1
- export const prerender = true;
1
+ export const ssr = false;
2
+ export const trailingSlash = 'always';
@@ -0,0 +1,6 @@
1
+ <nav>
2
+ <a href="/">home</a>
3
+ <a href="/about">about</a>
4
+ <a href="/about?name=hi">about</a>
5
+ </nav>
6
+ <slot></slot>
@@ -0,0 +1,2 @@
1
+ <h1>About</h1>
2
+ <p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
@@ -0,0 +1,6 @@
1
+ export function load({ params }) {
2
+ return {
3
+ title: 'hello ' + params.slug,
4
+ content: 'hello ' + params.slug
5
+ };
6
+ }
@@ -0,0 +1,9 @@
1
+ <h1>Greetings</h1>
2
+
3
+ <h1>{data.title}</h1>
4
+ <div>{@html data.content}</div>
5
+
6
+
7
+ <script>
8
+ export let data;
9
+ </script>
@@ -1,16 +1,13 @@
1
1
  import adapter from '@sveltejs/adapter-static';
2
-
3
- /** @type {import('@sveltejs/kit').Config} */
4
- const config = {
5
- kit: {
6
- adapter: adapter({
7
- pages: 'build',
8
- assets: 'build',
9
- fallback: null,
10
- precompress: false,
11
- strict: true
12
- })
13
- }
2
+
3
+ export default {
4
+ kit: {
5
+ adapter: adapter({
6
+ pages: 'build',
7
+ assets: 'build',
8
+ fallback: 'index.html',
9
+ precompress: false,
10
+ strict: true
11
+ })
12
+ }
14
13
  };
15
-
16
- export default config;
@@ -1,27 +1,11 @@
1
1
  from component.app import app
2
2
  from component.app_state import app_state
3
- from component.log import logger
4
3
  from component.messagebus import consumer, publisher
5
- from config import app_name, app_enable_message_consumer
6
- from helper.async_task import create_task
7
4
 
8
5
  app_state.set_liveness(True)
9
6
  messages = []
10
7
 
11
8
 
12
- async def on_error(exception: Exception):
13
- logger.critical(exception)
14
- app_state.set_readiness(False)
15
-
16
-
17
- @app.on_event('startup')
18
- async def startup_event():
19
- logger.info(f'{app_name} started')
20
- if app_enable_message_consumer:
21
- create_task(consumer.run(), on_error=on_error)
22
- app_state.set_readiness(True)
23
-
24
-
25
9
  @consumer.register('coba')
26
10
  async def handle_event(message):
27
11
  messages.append(message)
zrb/task/base_task.py CHANGED
@@ -71,8 +71,9 @@ class BaseTask(TaskModel):
71
71
  self.checkers = checkers
72
72
  self.checking_interval = checking_interval
73
73
  self.skip_execution = skip_execution
74
- self._is_checked: bool = False
75
- self._is_executed: bool = False
74
+ self._is_check_triggered: bool = False
75
+ self._is_execution_triggered: bool = False
76
+ self._is_execution_started: bool = False
76
77
  self._run_function: Optional[Callable[..., Any]] = run
77
78
  self._args: List[Any] = []
78
79
  self._kwargs: Mapping[str, Any] = {}
@@ -214,12 +215,12 @@ class BaseTask(TaskModel):
214
215
  print(colored(f'{colored_label}{colored_run_cmd}'), file=sys.stderr)
215
216
 
216
217
  async def _cached_check(self) -> bool:
217
- if self._is_checked:
218
+ if self._is_check_triggered:
218
219
  self.log_debug('Skip checking, because checking flag has been set')
219
220
  return True
220
221
  check_result = await self._check()
221
222
  if check_result:
222
- self._is_checked = True
223
+ self._is_check_triggered = True
223
224
  self.log_debug('Set checking flag to True')
224
225
  return check_result
225
226
 
@@ -232,6 +233,8 @@ class BaseTask(TaskModel):
232
233
  '''
233
234
  if len(self.checkers) == 0:
234
235
  return await self.check()
236
+ while not self._is_execution_started:
237
+ await asyncio.sleep(0.1)
235
238
  check_coroutines: Iterable[asyncio.Task] = []
236
239
  for checker_task in self.checkers:
237
240
  check_coroutines.append(
@@ -256,11 +259,11 @@ class BaseTask(TaskModel):
256
259
  return results[-1]
257
260
 
258
261
  async def _cached_run(self, *args: Any, **kwargs: Any) -> Any:
259
- if self._is_executed:
262
+ if self._is_execution_triggered:
260
263
  self.log_debug('Skip execution because execution flag is True')
261
264
  return
262
265
  self.log_debug('Set execution flag to True')
263
- self._is_executed = True
266
+ self._is_execution_triggered = True
264
267
  self.log_debug('Start running')
265
268
  # get upstream checker
266
269
  upstream_check_processes: Iterable[asyncio.Task] = []
@@ -270,6 +273,8 @@ class BaseTask(TaskModel):
270
273
  ))
271
274
  # wait all upstream checkers to complete
272
275
  await asyncio.gather(*upstream_check_processes)
276
+ # mark execution as started, so that checkers can start checking
277
+ self._is_execution_started = True
273
278
  if self.render_bool(self.skip_execution):
274
279
  self.log_info(
275
280
  f'Skip execution because config: {self.skip_execution}'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 0.0.41
3
+ Version: 0.0.43
4
4
  Summary: Your faithful companion
5
5
  Author-email: Go Frendi Gunawan <gofrendiasgard@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -62,13 +62,13 @@ zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/req
62
62
  zrb/builtin/generator/fastapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  zrb/builtin/generator/fastapp/add.py,sha256=0z3-e9fPidEBNhgTA1MlxHhci5KxR1cAAVzs95AdEpc,3763
64
64
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py,sha256=SO3RE81EEd1EN8h8QngEOBQseqq4sPKGDXq3kZ7Oqoc,7957
65
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py,sha256=IOYqX3Pq5W1KedbQjC6zwody5A9GbXcM0cXtlKSQ93I,8066
66
66
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/container.py,sha256=rR77rSN6ZMIaJGn-FTkPK1gVekimOHoy-iXfGDZCv1M,3183
67
67
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/deployment.py,sha256=qxY9n4aAhCFoDr6gl74OAcSQtr471b-1q9xf6tU1o8U,1766
68
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/frontend.py,sha256=12aixKa-9nMe_YAK8AWnnoygGTCYinspCSaSicdj75M,649
68
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/frontend.py,sha256=VHhCHKZjCkt8G3SxkErogt8Wzr0E7ywXEBcqOKNXN-c,1092
69
69
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/image.py,sha256=4-uWkecemGYDa7Y6Fd4lUR21mlCCrEYEjQ7W7nn2VZ8,1477
70
70
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/local.py,sha256=LaXatqSYsNspV_R37DUjfmKzxbXK-k202WBSVu94Edg,4254
71
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/build-frontend.sh,sha256=2J8pw_MDNaeZIbXt8ybn3Mlo-Um36VGg6-nM8pcM6II,32
71
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/build-frontend.sh,sha256=cHMzZFGGV95K7AaLgm3uQMY5yA7vT1-5N5RFPaR7gtg,38
72
72
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/pulumi-destroy.sh,sha256=u94XbUokbd9gzW0b-UZ9aOyK8niK-Y3U_QDZHRI0CNw,148
73
73
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/pulumi-up.sh,sha256=hv36V-g8y2IqjUwqFkC6Vi27xfJbTEm0sn4iQxmAerc,143
74
74
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/start.sh,sha256=tqyTk0bumhQ-0OZoZ4nCTS4OLYZf8OQnXzw0yUhE-mU,380
@@ -85,12 +85,14 @@ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/__init__.py,sha256
85
85
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/config.py,sha256=dTHc0gu4n4g-nNOtRdWN07xjxJyW-1D1E3gp5BmKMx0,1517
86
86
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/feature_disabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/feature_enabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/main.py,sha256=4mMIy7TAsXM3ma8ptg3YmbbHaZz_PmiMYXd4VSpXBf8,904
88
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/main.py,sha256=MBzyK4eCRqLclJe5ebPyh2cAlh2A5I-l92QQ-ZRsRac,444
89
89
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/requirements.txt,sha256=eb6WMS95-lPZ5gXz2roPYyVGEcvxpHgSOSrLUykQORM,120
90
90
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/template.env,sha256=4F1PmKg5uPM-EcmB0Y8bkzZ0hhKH2UlcXrrP-XVlKzQ,463
91
91
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app.py,sha256=3vGSV-L1AFWYNTI0p4owLFdbPekxQ0RGkCItZkTS94U,2284
93
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_state.py,sha256=TVMT_4pCrA_UsQGTLICNzaNNnfVmIn1gJ9llW5lY9sg,581
92
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app.py,sha256=GltNfKQJlV4B_SheVTYGqW83HRHfDGczWmcL_UI0ULA,1848
93
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_lifespan.py,sha256=NrSk2_sBS8tmzj_G2V20UAHJwcpIlYW8ZfsguAasHUk,938
94
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_state.py,sha256=A-jxlc9Emx6suiTQuDGk-YjhVbwfvARoPlRBr9taDw0,734
95
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/frontend_index.py,sha256=CsFN4s4oRKI73eCkPj06sBgImhn4oACmJqjXg7SgNqw,298
94
96
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/log.py,sha256=IVF4PxJRDCcCajMr4TB8KTsgdh0JvlhJj9aJlG_AZhY,378
95
97
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/messagebus.py,sha256=jWhhaEtBefFNIl69GTj1O3BDdz3ph6Sw8wKTnZKa2M0,2263
96
98
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -111,16 +113,21 @@ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/.npmrc,sh
111
113
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/.prettierignore,sha256=GQjxOuGuHvjVorAu-_WqdOZ_4-_JogxRekxKb04O9pA,160
112
114
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/.prettierrc,sha256=SzMzteA8Sd5xT7ZnAXch9jK97yzw_VeUitpRwIUFUdU,233
113
115
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/README.md,sha256=7ASuL7J7y3W44wn_izhZ_mBnzxWMXV4I0f2DL9-OHX0,944
114
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/package.json,sha256=AHZzA75R9Dg1ExVCPU-ED0VDOzumjSVt0mOe_PZ-pkY,1067
116
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/package.json,sha256=ZrJ6KmZM7rI5km4Ta7ZMEEhWSFcvwoyBvbmr_W_LbTI,1106
115
117
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/playwright.config.ts,sha256=HWngDBBeLyQi5QZx0EGQoc9lzdzycE32aivx3i4J21Q,225
116
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/svelte.config.js,sha256=eQplvzTTKf87mHw2f39K70RxsSboFhZ-fOBGD80Oebo,273
118
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/svelte.config.js,sha256=gw540kbSflIUEV-Cn8MCshiBKwj8Fxa4DB2mrEyPz6Q,233
117
119
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/tsconfig.json,sha256=sj7XMYCe4CrB-z91IlhC6-n6PHzM1khXzsAQcWmGR3c,532
118
120
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/vite.config.ts,sha256=JPM2I54wRSHcwcu527UHgSr9FtUUAWDC-AJerbrzgpI,210
119
121
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/app.d.ts,sha256=XZIh5rx33hH37TBvS61aAgXcRdfvNM29ohxPUo14h1A,241
120
122
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/app.html,sha256=z53vdWdjgOglHEgPW_H9OirJGx_0KyZEd4gaiJQ8cgA,329
121
123
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/index.test.ts,sha256=v1ozost_88J5VDCjzItbD_wE3rID6UQFq1p9sWMQZps,148
122
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+layout.js,sha256=MO7AoOZ8CDQaUcUfoBmvtfSBXuxaGDUB8uOdXaHE5n0,31
124
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+layout.js,sha256=IepBDK8VpfSwS_akOn9eRqRlv8erCF4VtsBXWvBUlH4,65
125
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+layout.svelte,sha256=LUM1d27ulxhe5KmUy9w_UwGqnPazJkZyukjJPOaSkEw,113
123
126
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/+page.svelte,sha256=UQaMu2veE8qCwiwwFmfcrNzlEZXactN0avLxv7h-uvw,121
127
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/about/+page.svelte,sha256=KerO5WcqYfom2DqSltTEcpHKiUFdLGIq224sdbSW1HQ,105
128
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/+page.js,sha256=8LXeFzKV5XH8huJaQ74LJhJ3R-c1lg369MNtDNFugkg,129
129
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/+page.svelte,sha256=0mLxurr7Cj_i_kCpCmF-bSimdTHr5sVdd286MwSnW_Y,112
130
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/src/routes/greetings/[slug]/page.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
131
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/static/favicon.png,sha256=UUbtebSGy54c3N14FM0irnjnDOsw-ga0zZoWzxIbyeY,1571
125
132
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/frontend/tests/test.ts,sha256=Zn47gMooUsmXRYTuDvtVajL07cEwPMhL5pOXeolSnEg,224
126
133
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -209,7 +216,7 @@ zrb/helper/string/double_quote.py,sha256=uYIdgotgVvMWxffJhrgb1TQI5v1-QdA0UByE2xG
209
216
  zrb/helper/string/parse_replacement.py,sha256=g4GHaZqncBIZyyZrcZJtylz6gySEU18A27S4XPTEDEI,222
210
217
  zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
218
  zrb/task/base_model.py,sha256=kOmiw1hIIcSIbyEBhiJxcg4yZvoTU6pR8Bh4_rY7qgU,14763
212
- zrb/task/base_task.py,sha256=LmYLvdeDK6OD_RC5K3D7Cau_pbr02uFbVNx4Ja20nq4,12158
219
+ zrb/task/base_task.py,sha256=BnyvhDlyMxHGGsdIIrQVbDvuMSXsD3ooqaOrbvqygsI,12462
213
220
  zrb/task/cmd_task.py,sha256=34y3VPfUk0zWYbrEPVonE4w4Kz8Ro7k9ucpviD37zhE,8057
214
221
  zrb/task/decorator.py,sha256=bTN0sNdgy7SeUIIuKtIsxQXhY2s9V79JWbgbMHnOH40,1571
215
222
  zrb/task/docker_compose_task.py,sha256=vZWYVj5mNMg0mD8cg7C8qm0vUCnmqvt22Vzeryx4Ngs,4996
@@ -238,8 +245,8 @@ zrb/task_input/input.py,sha256=I4KrdJR3muxAWgd8zX6CErogHYcFM80Si0DmC5-YJGE,69
238
245
  zrb/task_input/int_input.py,sha256=YTxeRvHGe60hUto3vGtjA3GVLsR2zPtlIca20XO_94A,1568
239
246
  zrb/task_input/password_input.py,sha256=-ygMqy3JoHtZB5aA7uwlwgntFBJKBasfP3eX9iaOxKE,1521
240
247
  zrb/task_input/str_input.py,sha256=RUw5zTUDAo1kyl5kcUpXyk073xh09N04D41PmH76RVk,1568
241
- zrb-0.0.41.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
242
- zrb-0.0.41.dist-info/LICENSE,sha256=hVM_U_SOdNZ9mLpaAZ5qn3HRXQXucGX9rliGPEifzVs,1073
243
- zrb-0.0.41.dist-info/WHEEL,sha256=rSgq_JpHF9fHR1lx53qwg_1-2LypZE_qmcuXbVUq948,81
244
- zrb-0.0.41.dist-info/METADATA,sha256=hB2jQRPJEkVtoVjtO_aAClE79tQ_sX4tas5m84_-i1M,12335
245
- zrb-0.0.41.dist-info/RECORD,,
248
+ zrb-0.0.43.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
249
+ zrb-0.0.43.dist-info/LICENSE,sha256=hVM_U_SOdNZ9mLpaAZ5qn3HRXQXucGX9rliGPEifzVs,1073
250
+ zrb-0.0.43.dist-info/WHEEL,sha256=rSgq_JpHF9fHR1lx53qwg_1-2LypZE_qmcuXbVUq948,81
251
+ zrb-0.0.43.dist-info/METADATA,sha256=0DgCLg8YZxDz3Ur0MJxdordE4qL9ZHWE_9JnjhzVbPc,12335
252
+ zrb-0.0.43.dist-info/RECORD,,
File without changes
File without changes