jac-client 0.1.0__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.
Files changed (141) hide show
  1. jac_client/docs/README.md +232 -172
  2. jac_client/docs/advanced-state.md +1012 -452
  3. jac_client/docs/asset-serving/intro.md +209 -0
  4. jac_client/docs/assets/pipe_line-v2.svg +32 -0
  5. jac_client/docs/assets/pipe_line.png +0 -0
  6. jac_client/docs/file-system/intro.md +90 -0
  7. jac_client/docs/guide-example/intro.md +117 -0
  8. jac_client/docs/guide-example/step-01-setup.md +260 -0
  9. jac_client/docs/guide-example/step-02-components.md +416 -0
  10. jac_client/docs/guide-example/step-03-styling.md +478 -0
  11. jac_client/docs/guide-example/step-04-todo-ui.md +477 -0
  12. jac_client/docs/guide-example/step-05-local-state.md +530 -0
  13. jac_client/docs/guide-example/step-06-events.md +750 -0
  14. jac_client/docs/guide-example/step-07-effects.md +469 -0
  15. jac_client/docs/guide-example/step-08-walkers.md +534 -0
  16. jac_client/docs/guide-example/step-09-authentication.md +586 -0
  17. jac_client/docs/guide-example/step-10-routing.md +540 -0
  18. jac_client/docs/guide-example/step-11-final.md +964 -0
  19. jac_client/docs/imports.md +538 -46
  20. jac_client/docs/lifecycle-hooks.md +517 -297
  21. jac_client/docs/routing.md +487 -357
  22. jac_client/docs/styling/intro.md +250 -0
  23. jac_client/docs/styling/js-styling.md +373 -0
  24. jac_client/docs/styling/material-ui.md +346 -0
  25. jac_client/docs/styling/pure-css.md +305 -0
  26. jac_client/docs/styling/sass.md +409 -0
  27. jac_client/docs/styling/styled-components.md +401 -0
  28. jac_client/docs/styling/tailwind.md +303 -0
  29. jac_client/examples/asset-serving/css-with-image/.babelrc +9 -0
  30. jac_client/examples/asset-serving/css-with-image/README.md +91 -0
  31. jac_client/examples/asset-serving/css-with-image/app.jac +67 -0
  32. jac_client/examples/asset-serving/css-with-image/assets/burger.png +0 -0
  33. jac_client/examples/asset-serving/css-with-image/package.json +28 -0
  34. jac_client/examples/asset-serving/css-with-image/styles.css +27 -0
  35. jac_client/examples/asset-serving/css-with-image/vite.config.js +29 -0
  36. jac_client/examples/asset-serving/image-asset/.babelrc +9 -0
  37. jac_client/examples/asset-serving/image-asset/README.md +119 -0
  38. jac_client/examples/asset-serving/image-asset/app.jac +43 -0
  39. jac_client/examples/asset-serving/image-asset/assets/burger.png +0 -0
  40. jac_client/examples/asset-serving/image-asset/package.json +28 -0
  41. jac_client/examples/asset-serving/image-asset/styles.css +27 -0
  42. jac_client/examples/asset-serving/image-asset/vite.config.js +29 -0
  43. jac_client/examples/asset-serving/import-alias/.babelrc +9 -0
  44. jac_client/examples/asset-serving/import-alias/README.md +83 -0
  45. jac_client/examples/asset-serving/import-alias/app.jac +57 -0
  46. jac_client/examples/asset-serving/import-alias/assets/burger.png +0 -0
  47. jac_client/examples/asset-serving/import-alias/package.json +28 -0
  48. jac_client/examples/asset-serving/import-alias/vite.config.js +29 -0
  49. jac_client/examples/basic/.babelrc +9 -0
  50. jac_client/examples/basic/README.md +16 -0
  51. jac_client/examples/basic/app.jac +16 -0
  52. jac_client/examples/basic/package.json +27 -0
  53. jac_client/examples/basic/vite.config.js +28 -0
  54. jac_client/examples/basic-auth/.babelrc +9 -0
  55. jac_client/examples/basic-auth/README.md +16 -0
  56. jac_client/examples/basic-auth/app.jac +308 -0
  57. jac_client/examples/basic-auth/package.json +27 -0
  58. jac_client/examples/basic-auth/vite.config.js +28 -0
  59. jac_client/examples/basic-auth-with-router/.babelrc +9 -0
  60. jac_client/examples/basic-auth-with-router/README.md +60 -0
  61. jac_client/examples/basic-auth-with-router/app.jac +464 -0
  62. jac_client/examples/basic-auth-with-router/package.json +28 -0
  63. jac_client/examples/basic-auth-with-router/vite.config.js +28 -0
  64. jac_client/examples/basic-full-stack/.babelrc +9 -0
  65. jac_client/examples/basic-full-stack/README.md +18 -0
  66. jac_client/examples/basic-full-stack/app.jac +320 -0
  67. jac_client/examples/basic-full-stack/package.json +28 -0
  68. jac_client/examples/basic-full-stack/vite.config.js +28 -0
  69. jac_client/examples/css-styling/js-styling/.babelrc +9 -0
  70. jac_client/examples/css-styling/js-styling/README.md +183 -0
  71. jac_client/examples/css-styling/js-styling/app.jac +63 -0
  72. jac_client/examples/css-styling/js-styling/package.json +28 -0
  73. jac_client/examples/css-styling/js-styling/styles.js +100 -0
  74. jac_client/examples/css-styling/js-styling/vite.config.js +28 -0
  75. jac_client/examples/css-styling/material-ui/.babelrc +9 -0
  76. jac_client/examples/css-styling/material-ui/README.md +16 -0
  77. jac_client/examples/css-styling/material-ui/app.jac +82 -0
  78. jac_client/examples/css-styling/material-ui/package.json +32 -0
  79. jac_client/examples/css-styling/material-ui/vite.config.js +28 -0
  80. jac_client/examples/css-styling/pure-css/.babelrc +9 -0
  81. jac_client/examples/css-styling/pure-css/README.md +16 -0
  82. jac_client/examples/css-styling/pure-css/app.jac +63 -0
  83. jac_client/examples/css-styling/pure-css/package.json +28 -0
  84. jac_client/examples/css-styling/pure-css/styles.css +112 -0
  85. jac_client/examples/css-styling/pure-css/vite.config.js +28 -0
  86. jac_client/examples/css-styling/sass-example/.babelrc +9 -0
  87. jac_client/examples/css-styling/sass-example/README.md +16 -0
  88. jac_client/examples/css-styling/sass-example/app.jac +63 -0
  89. jac_client/examples/css-styling/sass-example/package.json +29 -0
  90. jac_client/examples/css-styling/sass-example/styles.scss +158 -0
  91. jac_client/examples/css-styling/sass-example/vite.config.js +28 -0
  92. jac_client/examples/css-styling/styled-components/.babelrc +9 -0
  93. jac_client/examples/css-styling/styled-components/README.md +16 -0
  94. jac_client/examples/css-styling/styled-components/app.jac +66 -0
  95. jac_client/examples/css-styling/styled-components/package.json +29 -0
  96. jac_client/examples/css-styling/styled-components/styled.js +91 -0
  97. jac_client/examples/css-styling/styled-components/vite.config.js +28 -0
  98. jac_client/examples/css-styling/tailwind-example/.babelrc +9 -0
  99. jac_client/examples/css-styling/tailwind-example/README.md +16 -0
  100. jac_client/examples/css-styling/tailwind-example/app.jac +64 -0
  101. jac_client/examples/css-styling/tailwind-example/global.css +1 -0
  102. jac_client/examples/css-styling/tailwind-example/package.json +30 -0
  103. jac_client/examples/css-styling/tailwind-example/vite.config.js +30 -0
  104. jac_client/examples/full-stack-with-auth/.babelrc +9 -0
  105. jac_client/examples/full-stack-with-auth/README.md +16 -0
  106. jac_client/examples/full-stack-with-auth/app.jac +735 -0
  107. jac_client/examples/full-stack-with-auth/package.json +28 -0
  108. jac_client/examples/full-stack-with-auth/vite.config.js +30 -0
  109. jac_client/examples/with-router/.babelrc +9 -0
  110. jac_client/examples/with-router/README.md +17 -0
  111. jac_client/examples/with-router/app.jac +323 -0
  112. jac_client/examples/with-router/package.json +28 -0
  113. jac_client/examples/with-router/vite.config.js +28 -0
  114. jac_client/plugin/cli.py +95 -179
  115. jac_client/plugin/client.py +111 -2
  116. jac_client/plugin/client_runtime.jac +183 -890
  117. jac_client/plugin/vite_client_bundle.py +185 -205
  118. jac_client/tests/__init__.py +0 -1
  119. jac_client/tests/fixtures/{client_app.jac → basic-app/app.jac} +1 -1
  120. jac_client/tests/fixtures/cl_file/app.cl.jac +38 -0
  121. jac_client/tests/fixtures/cl_file/app.jac +15 -0
  122. jac_client/tests/fixtures/{client_app_with_antd.jac → client_app_with_antd/app.jac} +7 -0
  123. jac_client/tests/fixtures/{js_import.jac → js_import/app.jac} +2 -2
  124. jac_client/tests/fixtures/{relative_import.jac → relative_import/app.jac} +1 -1
  125. jac_client/tests/fixtures/{button.jac → relative_import/button.jac} +2 -2
  126. jac_client/tests/fixtures/spawn_test/app.jac +133 -0
  127. jac_client/tests/fixtures/{test_fragments_spread.jac → test_fragments_spread/app.jac} +11 -2
  128. jac_client/tests/test_asset_examples.py +339 -0
  129. jac_client/tests/test_cl.py +345 -151
  130. jac_client/tests/test_create_jac_app.py +41 -45
  131. {jac_client-0.1.0.dist-info → jac_client-0.2.1.dist-info}/METADATA +72 -16
  132. jac_client-0.2.1.dist-info/RECORD +140 -0
  133. jac_client/examples/little-x/package-lock.json +0 -2840
  134. jac_client/examples/todo-app/README.md +0 -82
  135. jac_client/examples/todo-app/app.jac +0 -683
  136. jac_client/examples/todo-app/package-lock.json +0 -999
  137. jac_client/examples/todo-app/package.json +0 -22
  138. jac_client-0.1.0.dist-info/RECORD +0 -33
  139. /jac_client/tests/fixtures/{utils.js → js_import/utils.js} +0 -0
  140. {jac_client-0.1.0.dist-info → jac_client-0.2.1.dist-info}/WHEEL +0 -0
  141. {jac_client-0.1.0.dist-info → jac_client-0.2.1.dist-info}/entry_points.txt +0 -0
@@ -13,72 +13,71 @@ class TestCreateJacApp(TestCase):
13
13
  def test_create_jac_app(self) -> None:
14
14
  """Test create-jac-app command."""
15
15
  test_project_name = "test-jac-app"
16
-
16
+
17
17
  # Create a temporary directory for testing
18
18
  with tempfile.TemporaryDirectory() as temp_dir:
19
19
  original_cwd = os.getcwd()
20
20
  try:
21
21
  # Change to temp directory
22
22
  os.chdir(temp_dir)
23
-
23
+
24
24
  # Run create-jac-app command
25
25
  result = run(
26
- [
27
- "jac",
28
- "create_jac_app",
29
- test_project_name
30
- ],
26
+ ["jac", "create_jac_app", test_project_name],
31
27
  capture_output=True,
32
28
  text=True,
33
- check=True
29
+ check=True,
34
30
  )
35
-
31
+
36
32
  # Check that command succeeded
37
33
  self.assertEqual(result.returncode, 0)
38
- self.assertIn(f"Successfully created Jac application '{test_project_name}'!", result.stdout)
39
-
34
+ self.assertIn(
35
+ f"Successfully created Jac application '{test_project_name}'!",
36
+ result.stdout,
37
+ )
38
+
40
39
  # Verify project directory was created
41
40
  project_path = os.path.join(temp_dir, test_project_name)
42
41
  self.assertTrue(os.path.exists(project_path))
43
42
  self.assertTrue(os.path.isdir(project_path))
44
-
43
+
45
44
  # Verify package.json was created and has correct content
46
45
  package_json_path = os.path.join(project_path, "package.json")
47
46
  self.assertTrue(os.path.exists(package_json_path))
48
-
47
+
49
48
  with open(package_json_path, "r") as f:
50
49
  package_data = json.load(f)
51
-
50
+
52
51
  self.assertEqual(package_data["name"], test_project_name)
53
52
  self.assertEqual(package_data["type"], "module")
54
53
  self.assertIn("vite", package_data["devDependencies"])
55
54
  self.assertIn("build", package_data["scripts"])
56
55
  self.assertIn("dev", package_data["scripts"])
57
56
  self.assertIn("preview", package_data["scripts"])
58
-
57
+
59
58
  # Verify app.jac file was created
60
59
  app_jac_path = os.path.join(project_path, "app.jac")
61
60
  self.assertTrue(os.path.exists(app_jac_path))
62
-
61
+
63
62
  with open(app_jac_path, "r") as f:
64
63
  app_jac_content = f.read()
65
-
66
- self.assertIn("jac_app()", app_jac_content)
67
-
64
+
65
+ self.assertIn("app()", app_jac_content)
66
+
68
67
  # Verify README.md was created
69
68
  readme_path = os.path.join(project_path, "README.md")
70
69
  self.assertTrue(os.path.exists(readme_path))
71
-
70
+
72
71
  with open(readme_path, "r") as f:
73
72
  readme_content = f.read()
74
-
73
+
75
74
  self.assertIn(f"# {test_project_name}", readme_content)
76
75
  self.assertIn("jac serve app.jac", readme_content)
77
-
76
+
78
77
  # Verify node_modules was created (npm install ran)
79
78
  node_modules_path = os.path.join(project_path, "node_modules")
80
79
  self.assertTrue(os.path.exists(node_modules_path))
81
-
80
+
82
81
  finally:
83
82
  # Return to original directory
84
83
  os.chdir(original_cwd)
@@ -89,51 +88,48 @@ class TestCreateJacApp(TestCase):
89
88
  original_cwd = os.getcwd()
90
89
  try:
91
90
  os.chdir(temp_dir)
92
-
91
+
93
92
  # Test with invalid name containing spaces
94
93
  result = run(
95
- [
96
- "jac",
97
- "create_jac_app",
98
- "invalid name with spaces"
99
- ],
94
+ ["jac", "create_jac_app", "invalid name with spaces"],
100
95
  capture_output=True,
101
- text=True
96
+ text=True,
102
97
  )
103
-
98
+
104
99
  # Should fail with non-zero exit code
105
100
  self.assertNotEqual(result.returncode, 0)
106
- self.assertIn("Project name must contain only letters, numbers, hyphens, and underscores", result.stderr)
107
-
101
+ self.assertIn(
102
+ "Project name must contain only letters, numbers, hyphens, and underscores",
103
+ result.stderr,
104
+ )
105
+
108
106
  finally:
109
107
  os.chdir(original_cwd)
110
108
 
111
109
  def test_create_jac_app_existing_directory(self) -> None:
112
110
  """Test create-jac-app command when directory already exists."""
113
111
  test_project_name = "existing-test-app"
114
-
112
+
115
113
  with tempfile.TemporaryDirectory() as temp_dir:
116
114
  original_cwd = os.getcwd()
117
115
  try:
118
116
  os.chdir(temp_dir)
119
-
117
+
120
118
  # Create the directory first
121
119
  os.makedirs(test_project_name)
122
-
120
+
123
121
  # Try to create app with same name
124
122
  result = run(
125
- [
126
- "jac",
127
- "create_jac_app",
128
- test_project_name
129
- ],
123
+ ["jac", "create_jac_app", test_project_name],
130
124
  capture_output=True,
131
- text=True
125
+ text=True,
132
126
  )
133
-
127
+
134
128
  # Should fail with non-zero exit code
135
129
  self.assertNotEqual(result.returncode, 0)
136
- self.assertIn(f"Directory '{test_project_name}' already exists", result.stderr)
137
-
130
+ self.assertIn(
131
+ f"Directory '{test_project_name}' already exists", result.stderr
132
+ )
133
+
138
134
  finally:
139
135
  os.chdir(original_cwd)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jac-client
3
- Version: 0.1.0
3
+ Version: 0.2.1
4
4
  Summary:
5
5
  Author: Jason Mars
6
6
  Author-email: jason@mars.ninja
@@ -9,7 +9,7 @@ Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.12
10
10
  Classifier: Programming Language :: Python :: 3.13
11
11
  Classifier: Programming Language :: Python :: 3.14
12
- Requires-Dist: jaclang (==0.8.10)
12
+ Requires-Dist: jaclang (==0.9.1)
13
13
  Description-Content-Type: text/markdown
14
14
 
15
15
  # Jac Client
@@ -23,8 +23,8 @@ Jac Client enables you to write React-like components, manage state, and build i
23
23
  ## ✨ Features
24
24
 
25
25
  - **Single Language**: Write frontend and backend in Jac
26
- - **No HTTP Client**: Use `__jacSpawn()` instead of fetch/axios
27
- - **Reactive State**: Built-in state management with `createState()`
26
+ - **No HTTP Client**: Use `jacSpawn()` instead of fetch/axios
27
+ - **React Hooks**: Use standard React `useState` and `useEffect` hooks
28
28
  - **Component-Based**: Build reusable UI components with JSX
29
29
  - **Graph Database**: Built-in graph data model eliminates need for SQL/NoSQL
30
30
  - **Type Safety**: Type checking across frontend and backend
@@ -48,7 +48,7 @@ cd my-app
48
48
  jac serve app.jac
49
49
  ```
50
50
 
51
- Visit `http://localhost:8000` to see your app!
51
+ Visit `http://localhost:8000/page/app` to see your app!
52
52
 
53
53
  ---
54
54
 
@@ -57,37 +57,93 @@ Visit `http://localhost:8000` to see your app!
57
57
  For detailed guides and tutorials, see the **[docs folder](jac_client/docs/)**:
58
58
 
59
59
  - **[Getting Started Guide](jac_client/docs/README.md)** - Complete beginner's guide
60
- - **[Routing](jac_client/docs/routing.md)** - Multi-page applications with `initRouter()`
61
- - **[Lifecycle Hooks](jac_client/docs/lifecycle-hooks.md)** - Using `onMount()` for initialization
62
- - **[Advanced State](jac_client/docs/advanced-state.md)** - Managing complex state
63
- - **[Imports](jac_client/docs/imports.md)** - Importing libraries, Jac files, and JavaScript modules
60
+ - **[Routing](jac_client/docs/routing.md)** - Multi-page applications with declarative routing (`<Router>`, `<Routes>`, `<Route>`)
61
+ - **[Lifecycle Hooks](jac_client/docs/lifecycle-hooks.md)** - Using React hooks (`useState`, `useEffect`)
62
+ - **[Advanced State](jac_client/docs/advanced-state.md)** - Managing complex state with React hooks
63
+ - **[Imports](jac_client/docs/imports.md)** - Importing third-party libraries (React, Ant Design, Lodash), Jac files, and JavaScript modules
64
64
 
65
65
  ---
66
66
 
67
67
  ## 💡 Example
68
68
 
69
+ ### Simple Counter with React Hooks
70
+
69
71
  ```jac
70
- cl {
71
- let [count, setCount] = createState({"value": 0});
72
+ cl import from react { useState, useEffect }
72
73
 
74
+ cl {
73
75
  def Counter() -> any {
74
- s = count();
76
+ let [count, setCount] = useState(0);
77
+
78
+ useEffect(lambda -> None {
79
+ console.log("Count changed:", count);
80
+ }, [count]);
81
+
75
82
  return <div>
76
- <h1>Count: {s.value}</h1>
77
- <button onClick={lambda -> None {
78
- setCount({"value": s.value + 1});
83
+ <h1>Count: {count}</h1>
84
+ <button onClick={lambda e: any -> None {
85
+ setCount(count + 1);
79
86
  }}>
80
87
  Increment
81
88
  </button>
82
89
  </div>;
83
90
  }
84
91
 
85
- def jac_app() -> any {
92
+ def app() -> any {
86
93
  return Counter();
87
94
  }
88
95
  }
89
96
  ```
90
97
 
98
+ ### Full-Stack Todo App
99
+
100
+ ```jac
101
+ cl import from react { useState, useEffect }
102
+ cl import from '@jac-client/utils' { jacSpawn }
103
+
104
+ # Backend: Jac nodes and walkers
105
+ node Todo {
106
+ has text: str;
107
+ has done: bool = False;
108
+ }
109
+
110
+ walker create_todo {
111
+ has text: str;
112
+ can create with `root entry {
113
+ new_todo = here ++> Todo(text=self.text);
114
+ report new_todo;
115
+ }
116
+ }
117
+
118
+ walker read_todos {
119
+ can read with `root entry {
120
+ visit [-->(`?Todo)];
121
+ }
122
+ }
123
+
124
+ # Frontend: React component
125
+ cl {
126
+ def app() -> any {
127
+ let [todos, setTodos] = useState([]);
128
+
129
+ useEffect(lambda -> None {
130
+ async def loadTodos() -> None {
131
+ result = await jacSpawn("read_todos", "", {});
132
+ setTodos(result.reports);
133
+ }
134
+ loadTodos();
135
+ }, []);
136
+
137
+ return <div>
138
+ <h1>My Todos</h1>
139
+ {todos.map(lambda todo: any -> any {
140
+ return <div key={todo._jac_id}>{todo.text}</div>;
141
+ })}
142
+ </div>;
143
+ }
144
+ }
145
+ ```
146
+
91
147
  ---
92
148
 
93
149
  ## 🔧 Requirements
@@ -0,0 +1,140 @@
1
+ jac_client/docs/README.md,sha256=bXTXxwKvua6iq2TQrwmFEyRp2NP0fgz2GId8oIlTfjU,17935
2
+ jac_client/docs/advanced-state.md,sha256=RNF5w2A8_ElBdfUFBjqWXqLG7pTVhCHP5Ujhuf9MCys,35465
3
+ jac_client/docs/asset-serving/intro.md,sha256=ZpfKJTLdrhdbq8AqT2a3P8C_wkB1OT49Kq5IXZouMyQ,5357
4
+ jac_client/docs/assets/pipe_line-v2.svg,sha256=SA7tYXOH-wl_UEkYaZ8BaMT0NvYg5eFcx5ynCZ85dl4,207016
5
+ jac_client/docs/assets/pipe_line.png,sha256=agSseYhL8rNX-cxlqlfbBOuhtq_iGnujNx6oQufl33s,70639
6
+ jac_client/docs/file-system/intro.md,sha256=QT-uhjdEB7abJHeQ38zXPc_w0wZy3mMjm62JCvBGFYM,2502
7
+ jac_client/docs/guide-example/intro.md,sha256=BftfRNckYMk4GDvEvFprJM6C3shR_Ub6wf07pXpT9AQ,4630
8
+ jac_client/docs/guide-example/step-01-setup.md,sha256=aG6fbQlrAXpKaciwMDPCVTG-MAZuJBu8JZwZ1_SSoOc,5374
9
+ jac_client/docs/guide-example/step-02-components.md,sha256=xD2eY59Wn100-o71yfrSvTSqud_mVSoMnD1hSYVzNNg,8710
10
+ jac_client/docs/guide-example/step-03-styling.md,sha256=O1k710uKVaFrLijVxaLHMOBOQK7DpH3FvYKgBm-Os0k,10717
11
+ jac_client/docs/guide-example/step-04-todo-ui.md,sha256=Di9yF9k5ch7LFha8Q3DCDf8PI8Dzps85zpnI1uZQJUk,12039
12
+ jac_client/docs/guide-example/step-05-local-state.md,sha256=k5a2FS6gS0JxsA2_rXQ-PJzYKZms9k11TRH5PVqfAkI,12956
13
+ jac_client/docs/guide-example/step-06-events.md,sha256=T7cUedmD-nNluSRuQa9VBYTybTWgfP2Xfs_lQPzztQM,18596
14
+ jac_client/docs/guide-example/step-07-effects.md,sha256=wSj64yqPSlye7oilW52t-BM5sTAh2nshmwRzbwuZi50,10135
15
+ jac_client/docs/guide-example/step-08-walkers.md,sha256=D8ERSQXjihOMj7neanvX1stihJdpEsQZMAa0Sm3ZvUg,10564
16
+ jac_client/docs/guide-example/step-09-authentication.md,sha256=CH0zkXONlEFlPs3xTyA-F7kDOML6E0OGvx1liWSTrhs,14295
17
+ jac_client/docs/guide-example/step-10-routing.md,sha256=PswR89r-0n3LkoyE4zIl2mDupfFntJ1Teo7Q5GJbxtU,11813
18
+ jac_client/docs/guide-example/step-11-final.md,sha256=deSEjhXxTBW_joiNrQM-Ad8qzVEwUiAS_WcOvVzCeyQ,28087
19
+ jac_client/docs/imports.md,sha256=WQCiYR5jwWZelz6d5JwsLSHUKGbHg23mPDkREdInBiw,25709
20
+ jac_client/docs/lifecycle-hooks.md,sha256=MU2aRD-EbGynjW-qe3jrN82dtebfiLd5uepP-14i6Xc,19494
21
+ jac_client/docs/routing.md,sha256=yDQfyCWUhMDwyt7r8pZyCwj-TSXnZdl21BQazIcWFdw,17248
22
+ jac_client/docs/styling/intro.md,sha256=peVfslVuIHX6HeFqxrM8RV2emVcdrI65Grx54LWisj4,7834
23
+ jac_client/docs/styling/js-styling.md,sha256=5wN9vCj1dWgqaNAq-3-UsKFQ-NCU84OpGzxg-nHHLJU,7898
24
+ jac_client/docs/styling/material-ui.md,sha256=4ejNTLJ2n8kxx6kDoVh1UWaBGVaPTQfmrkXcVXuDYvs,7652
25
+ jac_client/docs/styling/pure-css.md,sha256=gAY7ANDWITQY51Kmo5to71PXUgYqukXxlZKzeeEQmLM,5840
26
+ jac_client/docs/styling/sass.md,sha256=Q8owSxrsiGAA8APRk9Xn9gxs1w1taAEsEjsy_SHzllA,6672
27
+ jac_client/docs/styling/styled-components.md,sha256=8Nr-Vb8vq6ns6h52o7B6i4N6PM3PrkgL3G_4A3uXtEY,7871
28
+ jac_client/docs/styling/tailwind.md,sha256=78Ajf694Li-jDdVulzWswgUIpc0E8IC7sb0581yLUJA,5841
29
+ jac_client/examples/asset-serving/css-with-image/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
30
+ jac_client/examples/asset-serving/css-with-image/README.md,sha256=J-IFKB8g8NBSgAQXHQWZLn1V0nPT70fPI-gH7G-qB_0,2124
31
+ jac_client/examples/asset-serving/css-with-image/app.jac,sha256=QWv57Z2QSOoN6wZHATefQPRgNNWXAOJGvv1yc4QMzRs,2430
32
+ jac_client/examples/asset-serving/css-with-image/assets/burger.png,sha256=NUFtYLER3WGqwYTiVpL88RXAG0t4au0y5ePpwl2Qm9k,33328
33
+ jac_client/examples/asset-serving/css-with-image/package.json,sha256=MayerZ6JUO-RpQZw3xnpymrNBcnBU8iJ3wwR9wVgFTE,711
34
+ jac_client/examples/asset-serving/css-with-image/styles.css,sha256=rL9_8ujDJAesHBroPzLvjPfSq5V-xRB_iXyx4N1U7N4,505
35
+ jac_client/examples/asset-serving/css-with-image/vite.config.js,sha256=4yIk-j-2gyJj6KNUD6QwyxeF2FIxy5eAZis--RginwA,738
36
+ jac_client/examples/asset-serving/image-asset/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
37
+ jac_client/examples/asset-serving/image-asset/README.md,sha256=Sbw7MszTVw4q6dGjZ-szrYTZwhMRg7T2_0KDiF4G7NY,2702
38
+ jac_client/examples/asset-serving/image-asset/app.jac,sha256=N-q_MfIlms4jQsmhrZ7rVqEuuXzx3oGgrTiR5NZPdbM,1470
39
+ jac_client/examples/asset-serving/image-asset/assets/burger.png,sha256=NUFtYLER3WGqwYTiVpL88RXAG0t4au0y5ePpwl2Qm9k,33328
40
+ jac_client/examples/asset-serving/image-asset/package.json,sha256=EG8jK-q6L-OIdIQj3Z7zFVPrjbuUNRxPv0yQY0tDKKg,701
41
+ jac_client/examples/asset-serving/image-asset/styles.css,sha256=rL9_8ujDJAesHBroPzLvjPfSq5V-xRB_iXyx4N1U7N4,505
42
+ jac_client/examples/asset-serving/image-asset/vite.config.js,sha256=4yIk-j-2gyJj6KNUD6QwyxeF2FIxy5eAZis--RginwA,738
43
+ jac_client/examples/asset-serving/import-alias/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
44
+ jac_client/examples/asset-serving/import-alias/README.md,sha256=pvZt-vZ_CZXq8noZZ0sh32N4MjYUaY90o1KyE_AScjc,1989
45
+ jac_client/examples/asset-serving/import-alias/app.jac,sha256=YefLHMW7rkkCu99z8CP-4XIEAAwgxCnmxVyelIf5q3Y,2473
46
+ jac_client/examples/asset-serving/import-alias/assets/burger.png,sha256=NUFtYLER3WGqwYTiVpL88RXAG0t4au0y5ePpwl2Qm9k,33328
47
+ jac_client/examples/asset-serving/import-alias/package.json,sha256=ZGxZxlk8kcq7TjHTp5CweIsR1gcKjCVBLxRNGUPJ8tA,703
48
+ jac_client/examples/asset-serving/import-alias/vite.config.js,sha256=4yIk-j-2gyJj6KNUD6QwyxeF2FIxy5eAZis--RginwA,738
49
+ jac_client/examples/basic/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
50
+ jac_client/examples/basic/README.md,sha256=Ra90lVRm62Xnvd2j1cRewMZr_qKLQDxuRTq4-r2zU2g,188
51
+ jac_client/examples/basic/app.jac,sha256=Ytf4UrWHGPtayG0QddOyiy_60tneP_eFLzQfaZkaSdY,433
52
+ jac_client/examples/basic/package.json,sha256=jocBFTSfVdlfBNGdUgIfhZx0YuxVYcS49j368JI594M,656
53
+ jac_client/examples/basic/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
54
+ jac_client/examples/basic-auth/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
55
+ jac_client/examples/basic-auth/README.md,sha256=aLI6d9PFhWQ5otE2ibYLia9pCCTzQBRl_snHlWFDgvw,192
56
+ jac_client/examples/basic-auth/app.jac,sha256=aLu-1B8oISgDj_1FnwWCcfs7ZQkjhgWH2uM0qTaCytQ,12173
57
+ jac_client/examples/basic-auth/package.json,sha256=un_qE_dVfFNOSgiMfqOujHTgVsHmte6aho5F8gEi-9Q,664
58
+ jac_client/examples/basic-auth/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
59
+ jac_client/examples/basic-auth-with-router/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
60
+ jac_client/examples/basic-auth-with-router/README.md,sha256=rYvgGTT_PzzH_Whg-wLLI0aIj06VB2ZFCbnSTleNN7E,1824
61
+ jac_client/examples/basic-auth-with-router/app.jac,sha256=-e5FLlFZf4pddSrNmitlhtpv5_z9wkdcnxIc2RagoNg,15079
62
+ jac_client/examples/basic-auth-with-router/package.json,sha256=0jl9pUaXilbxKviDdBO_bCT6tXevMyP6RT17DlVmap4,723
63
+ jac_client/examples/basic-auth-with-router/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
64
+ jac_client/examples/basic-full-stack/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
65
+ jac_client/examples/basic-full-stack/README.md,sha256=qEFUx5zPYk2OYi9XOpPBbE9oWyqudHu6YXTkcE35QPA,200
66
+ jac_client/examples/basic-full-stack/app.jac,sha256=T2DbREtr7AaWskTIvvmrl6PCAtxclXwXhxity65I-6M,12080
67
+ jac_client/examples/basic-full-stack/package.json,sha256=mBnqM2BG2GP7A7yRh7O_idRoCU2psojF8TD3rBzJ65c,710
68
+ jac_client/examples/basic-full-stack/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
69
+ jac_client/examples/css-styling/js-styling/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
70
+ jac_client/examples/css-styling/js-styling/README.md,sha256=duI1ApGtzApSaPHGfk-BBPIT-tCUG62MVaXGMcpTYoQ,4263
71
+ jac_client/examples/css-styling/js-styling/app.jac,sha256=unfs53WWqgwfegC5OdwZVBuOnCU83Bn3sUzJ21Cu0pM,1993
72
+ jac_client/examples/css-styling/js-styling/package.json,sha256=r5_9twBgnsrxphvujWxAp-X8mfTixnMDMDSwt_HAGgY,714
73
+ jac_client/examples/css-styling/js-styling/styles.js,sha256=fhphoGb5G02yGokIS_vvIKbdnzbGjL-f2s4V_zOsz28,2368
74
+ jac_client/examples/css-styling/js-styling/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
75
+ jac_client/examples/css-styling/material-ui/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
76
+ jac_client/examples/css-styling/material-ui/README.md,sha256=2DGfAKCZ04cbRFPS8DFTKi7Ks_nSwGDq1nwbDlc_eqA,193
77
+ jac_client/examples/css-styling/material-ui/app.jac,sha256=f5YeHR7MEgIhkflOn-ZLCT-wwx5VojIm3OsfU3v5ZoA,3764
78
+ jac_client/examples/css-styling/material-ui/package.json,sha256=R9VkXxM9TPtW-32rJUnARm8sjKyq9zRh7CnqHryNZyw,839
79
+ jac_client/examples/css-styling/material-ui/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
80
+ jac_client/examples/css-styling/pure-css/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
81
+ jac_client/examples/css-styling/pure-css/README.md,sha256=2DGfAKCZ04cbRFPS8DFTKi7Ks_nSwGDq1nwbDlc_eqA,193
82
+ jac_client/examples/css-styling/pure-css/app.jac,sha256=UC2QQ1lTGNK4L4LGNLFLQ1C7rmyTU2IwfwiqWKlXifA,1910
83
+ jac_client/examples/css-styling/pure-css/package.json,sha256=Qz7G4gWkHIb7IfVqMspKpHRs0Xj3GhVMCbUEnODYvZk,701
84
+ jac_client/examples/css-styling/pure-css/styles.css,sha256=Dcf3Bel1NpiuXNkuIred1Swf_utVYm2ESkT2kUnrTdA,1889
85
+ jac_client/examples/css-styling/pure-css/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
86
+ jac_client/examples/css-styling/sass-example/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
87
+ jac_client/examples/css-styling/sass-example/README.md,sha256=0xUQHIZ2WMv2yyxLPCI3YNA-ybgEJl8YnPUTBqxcHbY,194
88
+ jac_client/examples/css-styling/sass-example/app.jac,sha256=jhDlMIL0UDYw9mdQ5IWcgoQhFyn6MTNcXnC0Olfi1Fo,1911
89
+ jac_client/examples/css-styling/sass-example/package.json,sha256=Mbku8CdZ-yCCV35RS19AseDMNpa94yrJcvr_1bZ1kfc,726
90
+ jac_client/examples/css-styling/sass-example/styles.scss,sha256=JZc_C65UBT8e9BdN1UnRueO8K7Ty-Ib8RJHD7vTwZJc,2670
91
+ jac_client/examples/css-styling/sass-example/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
92
+ jac_client/examples/css-styling/styled-components/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
93
+ jac_client/examples/css-styling/styled-components/README.md,sha256=aUHMXm48JXtMcWoo6WU6KcuNTBw7Fy09qF6Deau-RIE,199
94
+ jac_client/examples/css-styling/styled-components/app.jac,sha256=q9-jHVbVqhQFaoMlLkV0-G0xD5I3Ois6OYWrrrAjqQI,1669
95
+ jac_client/examples/css-styling/styled-components/package.json,sha256=aYg9QpnO9KybnLZijPTBErK3AhkvwyZuNg_p3DEi2tg,749
96
+ jac_client/examples/css-styling/styled-components/styled.js,sha256=Nt5pL5F5Ngo9pO-927379r2sL-ieUk7ur81VT_y0QU4,2023
97
+ jac_client/examples/css-styling/styled-components/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
98
+ jac_client/examples/css-styling/tailwind-example/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
99
+ jac_client/examples/css-styling/tailwind-example/README.md,sha256=5NWjGfNn6DYEwvDgShseSuAkKPuURg1fmzjYQ5_eq4I,198
100
+ jac_client/examples/css-styling/tailwind-example/app.jac,sha256=KduHyVpkTWVlTTH5k-d3z7JNYMFC7DrHNos4Qc9VYJA,2893
101
+ jac_client/examples/css-styling/tailwind-example/global.css,sha256=lE5uEsAGemdng2p4rWxAlbgp-Wa0TzO8lc_vFAGrPBA,22
102
+ jac_client/examples/css-styling/tailwind-example/package.json,sha256=_GzsqRDrd0Qt7gyMEGlSicv6LvSHlDZDwFw8hvN3LhI,778
103
+ jac_client/examples/css-styling/tailwind-example/vite.config.js,sha256=j3gqezqr3mvKEabBaDI4CBZIYuHQi1Cep2FSxt1gjE0,750
104
+ jac_client/examples/full-stack-with-auth/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
105
+ jac_client/examples/full-stack-with-auth/README.md,sha256=lQL3mQIxxHSujm0-xN95D-lh_7VfS94BmKnk1w30CLE,202
106
+ jac_client/examples/full-stack-with-auth/app.jac,sha256=wPgxS5ag9BAU6as5-iDiXOZFVXFlcKldv8hyrfGj2Ms,22518
107
+ jac_client/examples/full-stack-with-auth/package.json,sha256=xI-CNLFet0hqws_QelPZitVTnQTZHTXA70QcPjZXn9g,719
108
+ jac_client/examples/full-stack-with-auth/vite.config.js,sha256=Hs7wgen2DoKvHfge2bg91H45UvzgfwzC45QRRYto73Q,711
109
+ jac_client/examples/little-x/app.jac,sha256=NueM8h35Bvf-hXL-kyeZ01-HAL7xZxUxrpHR99ASkhM,16760
110
+ jac_client/examples/little-x/package.json,sha256=XaXpijPuRDojT-yQFJwkaopDgqMiriepqEk0LsFQ-cU,521
111
+ jac_client/examples/little-x/submit-button.jac,sha256=ByyRpDDN49RxoF8k7TC0r1mgoKAwwdlpo6wiiTE7p_4,324
112
+ jac_client/examples/with-router/.babelrc,sha256=hbksHBMOJhU8iQeWqMk9fBu1Ym5NiR1AxgbBBdwnvW8,131
113
+ jac_client/examples/with-router/README.md,sha256=Vj66hInHSqvv_5wxJlaH-fsvuBfwKd-qHoZFz53eqUs,189
114
+ jac_client/examples/with-router/app.jac,sha256=qw1_J4YmqfrWqClFGfb0Ed9lcaGpDRsxrj3Wx6cVP6o,8673
115
+ jac_client/examples/with-router/package.json,sha256=k8KnRIWgCrmRvmJUUB0dtG45qJFYBb-wI16w4cwrJPU,691
116
+ jac_client/examples/with-router/vite.config.js,sha256=Fw_3OJilwEKwNo6nCpWyk2Tdgmx3BeN7QKRpXIM3lfk,671
117
+ jac_client/plugin/cli.py,sha256=kyhhLGYpfnkwrQqNp2xjfl8imFWai567kiM17lobeR8,8110
118
+ jac_client/plugin/client.py,sha256=FzuCzvoDfXunrzsGkT1_obcDVqX6mzVn6DO-WcgOZyo,5036
119
+ jac_client/plugin/client_runtime.jac,sha256=wDfckQTRSzlOZ9NwUg7pb7ljPb0tCf2e_-OtczK3uRQ,7613
120
+ jac_client/plugin/vite_client_bundle.py,sha256=LcTFypMvyXlT0nD-cmmn1gR5hRcN9pW7SmuSeNLjcw0,17186
121
+ jac_client/tests/__init__.py,sha256=HSr78dvKyvNmP7bLmAssfYItAn4puFwAe1oWnV8l7pA,36
122
+ jac_client/tests/fixtures/basic-app/app.jac,sha256=nTPZ3Cc5pPAEncRfrfo1Z2LAyz6DVgGdB_uUW7W4b8Q,437
123
+ jac_client/tests/fixtures/cl_file/app.cl.jac,sha256=nfg1l9C7krdwez0u8f9arMUOx_xft9tenEhwKBLlpeE,1104
124
+ jac_client/tests/fixtures/cl_file/app.jac,sha256=sYHoet_h4XOb_-JjP2y359kk4JkuX_REwWrsN6I8plc,275
125
+ jac_client/tests/fixtures/client_app_with_antd/app.jac,sha256=j2N82axLh4lKXjsAceETK0_W3kUGVMQzeFaCKYCHLQ4,490
126
+ jac_client/tests/fixtures/js_import/app.jac,sha256=hlp1M6yDGSXB1d7mUYBLa9aPJUPzEtJwXzHnCtfLW7o,716
127
+ jac_client/tests/fixtures/js_import/utils.js,sha256=lrcZ9yUEb4QrpUpUp0gWRvISFui9_v96rWPN-btllmU,413
128
+ jac_client/tests/fixtures/package-lock.json,sha256=RKNoyMoGXx3IOm3B5d1Kt0vrgMac9intCLXGew51AAQ,19358
129
+ jac_client/tests/fixtures/package.json,sha256=s5Ltvbh1MQGeZZyyNJdqhoA21VO5F7scBcVPlgHpF3c,278
130
+ jac_client/tests/fixtures/relative_import/app.jac,sha256=F0BD1eDVATHNGOXkip6saOlsIrI-Ageh0ctw5Ky2Yq8,189
131
+ jac_client/tests/fixtures/relative_import/button.jac,sha256=_6tmwqH6TwBYzvmoJxjSuH5q1UulaxwL4R0LVWm-cDY,105
132
+ jac_client/tests/fixtures/spawn_test/app.jac,sha256=2SA2kQ6vyQxNxRvTSJb6dEZDavK-YYQ2qI3Ot63_xJ4,4045
133
+ jac_client/tests/fixtures/test_fragments_spread/app.jac,sha256=ya4il9bDveZno6l9CsyciXFvaIRsEBhCeZK2mRAheIU,1106
134
+ jac_client/tests/test_asset_examples.py,sha256=xyBeSWJEmw3Y7QzeyJvRTBDjgGZqt4F3672hEh0-DKo,11138
135
+ jac_client/tests/test_cl.py,sha256=9fHJ2VdfWSUlu_JdwwMqnEcocH9qzkhZXlS89dcS_fM,21733
136
+ jac_client/tests/test_create_jac_app.py,sha256=HfLYYoEVOf69k07tTAnuHz7mhVGoYMv8zBrPXLW7OGE,5039
137
+ jac_client-0.2.1.dist-info/METADATA,sha256=KSjjP53rZU8vOzXNtc3Nvd3H13npStAgr1bVeAZwGmQ,4485
138
+ jac_client-0.2.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
139
+ jac_client-0.2.1.dist-info/entry_points.txt,sha256=WxzPDwDUGAvQyJ_RkIOSk3cJgJChESQGP839Kb70_vo,92
140
+ jac_client-0.2.1.dist-info/RECORD,,