h3ravel-monorepo 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.github/workflows/release.yml +42 -0
- package/.husky/pre-commit +1 -0
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/docs/.gitkeep +0 -0
- package/eslint.config.js +17 -0
- package/examples/basic-app/.env.example +54 -0
- package/examples/basic-app/package.json +27 -0
- package/examples/basic-app/public/h3ravel-logo.svg +23 -0
- package/examples/basic-app/public/main.js +13 -0
- package/examples/basic-app/src/Exceptions/.gitkeep +0 -0
- package/examples/basic-app/src/config/app.ts +125 -0
- package/examples/basic-app/src/config/filesystem.ts +59 -0
- package/examples/basic-app/src/http/controllers/HomeController.ts +17 -0
- package/examples/basic-app/src/http/controllers/UserController.ts +29 -0
- package/examples/basic-app/src/http/middlewares/AuthMiddleware.ts +8 -0
- package/examples/basic-app/src/index.ts +30 -0
- package/examples/basic-app/src/resources/views/index.edge +383 -0
- package/examples/basic-app/src/routes/api.ts +17 -0
- package/examples/basic-app/src/routes/web.ts +6 -0
- package/examples/basic-app/src/storage/app/public/.gitkeep +0 -0
- package/examples/basic-app/tsconfig.json +8 -0
- package/package.json +36 -0
- package/packages/cache/node_modules/.bin/tsc +21 -0
- package/packages/cache/node_modules/.bin/tsserver +21 -0
- package/packages/cache/package.json +26 -0
- package/packages/cache/src/CacheManager.ts +1 -0
- package/packages/cache/src/Contracts/.gitkeep +0 -0
- package/packages/cache/src/Drivers/MemoryCache.ts +1 -0
- package/packages/cache/src/Drivers/RedisCache.ts +1 -0
- package/packages/cache/src/Helpers.ts +1 -0
- package/packages/cache/src/Providers/CacheServiceProvider.ts +16 -0
- package/packages/cache/src/index.ts +9 -0
- package/packages/cache/tests/.gitkeep +0 -0
- package/packages/cache/tsconfig.json +9 -0
- package/packages/cache/vite.config.ts +9 -0
- package/packages/config/node_modules/.bin/tsc +21 -0
- package/packages/config/node_modules/.bin/tsserver +21 -0
- package/packages/config/package.json +34 -0
- package/packages/config/src/ConfigRepository.ts +51 -0
- package/packages/config/src/Contracts/.gitkeep +0 -0
- package/packages/config/src/EnvLoader.ts +16 -0
- package/packages/config/src/Helpers.ts +1 -0
- package/packages/config/src/Providers/ConfigServiceProvider.ts +46 -0
- package/packages/config/src/index.ts +8 -0
- package/packages/config/tests/.gitkeep +0 -0
- package/packages/config/tsconfig.json +8 -0
- package/packages/config/vite.config.ts +9 -0
- package/packages/console/node_modules/.bin/tsc +21 -0
- package/packages/console/node_modules/.bin/tsserver +21 -0
- package/packages/console/package.json +26 -0
- package/packages/console/src/Commands/MakeController.ts +1 -0
- package/packages/console/src/Commands/MakeModel.ts +1 -0
- package/packages/console/src/Commands/MakeResource.ts +1 -0
- package/packages/console/src/Contracts/.gitkeep +0 -0
- package/packages/console/src/IO/.gitkeep +0 -0
- package/packages/console/src/Kernel.ts +1 -0
- package/packages/console/src/Musketeer.ts +4 -0
- package/packages/console/src/Providers/ConsoleServiceProvider.ts +16 -0
- package/packages/console/src/index.ts +10 -0
- package/packages/console/tests/.gitkeep +0 -0
- package/packages/console/tsconfig.json +8 -0
- package/packages/console/vite.config.ts +9 -0
- package/packages/core/node_modules/.bin/tsc +21 -0
- package/packages/core/node_modules/.bin/tsserver +21 -0
- package/packages/core/package.json +29 -0
- package/packages/core/src/Application.ts +164 -0
- package/packages/core/src/Container.ts +71 -0
- package/packages/core/src/Contracts/.gitkeep +0 -0
- package/packages/core/src/Contracts/BindingsContract.ts +37 -0
- package/packages/core/src/Controller.ts +20 -0
- package/packages/core/src/Exceptions/Handler.ts +1 -0
- package/packages/core/src/Http/Kernel.ts +47 -0
- package/packages/core/src/Providers/AppServiceProvider.ts +18 -0
- package/packages/core/src/Providers/ViewServiceProvider.ts +19 -0
- package/packages/core/src/ServiceProvider.ts +21 -0
- package/packages/core/src/Utils/PathLoader.ts +46 -0
- package/packages/core/src/index.ts +14 -0
- package/packages/core/tests/.gitkeep +0 -0
- package/packages/core/tsconfig.json +8 -0
- package/packages/core/vite.config.ts +9 -0
- package/packages/database/node_modules/.bin/tsc +21 -0
- package/packages/database/node_modules/.bin/tsserver +21 -0
- package/packages/database/package.json +26 -0
- package/packages/database/src/Contracts/.gitkeep +0 -0
- package/packages/database/src/Migrations/.gitkeep +0 -0
- package/packages/database/src/Model.ts +1 -0
- package/packages/database/src/Providers/DatabaseServiceProvider.ts +16 -0
- package/packages/database/src/Query/.gitkeep +0 -0
- package/packages/database/src/index.ts +6 -0
- package/packages/database/src/tests/.gitkeep +0 -0
- package/packages/database/tsconfig.json +8 -0
- package/packages/database/vite.config.ts +9 -0
- package/packages/http/node_modules/.bin/tsc +21 -0
- package/packages/http/node_modules/.bin/tsserver +21 -0
- package/packages/http/package.json +28 -0
- package/packages/http/src/Contracts/ControllerContracts.ts +13 -0
- package/packages/http/src/Contracts/HttpContract.ts +7 -0
- package/packages/http/src/Middleware/LogRequests.ts +9 -0
- package/packages/http/src/Middleware.ts +5 -0
- package/packages/http/src/Providers/HttpServiceProvider.ts +22 -0
- package/packages/http/src/Request.ts +59 -0
- package/packages/http/src/Resources/ApiResource.ts +39 -0
- package/packages/http/src/Resources/JsonResource.ts +201 -0
- package/packages/http/src/Response.ts +80 -0
- package/packages/http/src/index.ts +13 -0
- package/packages/http/tests/.gitkeep +0 -0
- package/packages/http/tsconfig.json +8 -0
- package/packages/http/vite.config.ts +9 -0
- package/packages/mail/node_modules/.bin/tsc +21 -0
- package/packages/mail/node_modules/.bin/tsserver +21 -0
- package/packages/mail/package.json +26 -0
- package/packages/mail/src/Contracts/.gitkeep +0 -0
- package/packages/mail/src/Drivers/SES.ts +1 -0
- package/packages/mail/src/Drivers/SMTP.ts +1 -0
- package/packages/mail/src/Helpers.ts +1 -0
- package/packages/mail/src/Mailable.ts +1 -0
- package/packages/mail/src/Mailer.ts +1 -0
- package/packages/mail/src/Providers/MailServiceProvider.ts +16 -0
- package/packages/mail/src/index.ts +10 -0
- package/packages/mail/tests/.gitkeep +0 -0
- package/packages/mail/tsconfig.json +8 -0
- package/packages/mail/vite.config.ts +9 -0
- package/packages/queue/node_modules/.bin/tsc +21 -0
- package/packages/queue/node_modules/.bin/tsserver +21 -0
- package/packages/queue/package.json +26 -0
- package/packages/queue/src/Contracts/.gitkeep +0 -0
- package/packages/queue/src/Drivers/MemoryDriver.ts +1 -0
- package/packages/queue/src/Drivers/RedisDriver.ts +1 -0
- package/packages/queue/src/Jobs/.gitkeep +0 -0
- package/packages/queue/src/Providers/QueueServiceProvider.ts +16 -0
- package/packages/queue/src/QueueManager.ts +1 -0
- package/packages/queue/src/Workers/.gitkeep +0 -0
- package/packages/queue/src/index.ts +8 -0
- package/packages/queue/tests/.gitkeep +0 -0
- package/packages/queue/tsconfig.json +8 -0
- package/packages/queue/vite.config.ts +9 -0
- package/packages/router/node_modules/.bin/tsc +21 -0
- package/packages/router/node_modules/.bin/tsserver +21 -0
- package/packages/router/package.json +27 -0
- package/packages/router/src/Contracts/.gitkeep +0 -0
- package/packages/router/src/Controller.ts +1 -0
- package/packages/router/src/Decorators/ApiResource.ts +1 -0
- package/packages/router/src/Decorators/Controller.ts +1 -0
- package/packages/router/src/Decorators/Get.ts +1 -0
- package/packages/router/src/Decorators/Middleware.ts +1 -0
- package/packages/router/src/Decorators/Post.ts +1 -0
- package/packages/router/src/Middleware/.gitkeep +0 -0
- package/packages/router/src/Providers/AssetsServiceProvider.ts +53 -0
- package/packages/router/src/Providers/RouteServiceProvider.ts +44 -0
- package/packages/router/src/Route.ts +1 -0
- package/packages/router/src/Router.ts +180 -0
- package/packages/router/src/index.ts +14 -0
- package/packages/router/tests/.gitkeep +0 -0
- package/packages/router/tsconfig.json +8 -0
- package/packages/router/vite.config.ts +9 -0
- package/packages/support/node_modules/.bin/tsc +21 -0
- package/packages/support/node_modules/.bin/tsserver +21 -0
- package/packages/support/package.json +26 -0
- package/packages/support/src/Contracts/ObjContract.ts +53 -0
- package/packages/support/src/Contracts/StrContract.ts +6 -0
- package/packages/support/src/Facades/.gitkeep +0 -0
- package/packages/support/src/Helpers/Arr.ts +33 -0
- package/packages/support/src/Helpers/Number.ts +194 -0
- package/packages/support/src/Helpers/Obj.ts +220 -0
- package/packages/support/src/Helpers/Str.ts +256 -0
- package/packages/support/src/index.ts +10 -0
- package/packages/support/tests/.gitkeep +0 -0
- package/packages/support/tsconfig.json +8 -0
- package/packages/support/vite.config.ts +9 -0
- package/pnpm-workspace.yaml +7 -0
- package/tsconfig.json +26 -0
- package/tsup.config.ts +15 -0
- package/vite.base.config.ts +12 -0
@@ -0,0 +1,383 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8" />
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
|
+
<title>H3ravel - The web framework that masks your fears</title>
|
8
|
+
<meta name="description"
|
9
|
+
content="A modern TypeScript runtime-agnostic web framework built on top of H3, designed to bring the elegance and developer experience of Laravel to the JavaScript ecosystem.">
|
10
|
+
<style>
|
11
|
+
* {
|
12
|
+
margin: 0;
|
13
|
+
padding: 0;
|
14
|
+
box-sizing: border-box;
|
15
|
+
}
|
16
|
+
|
17
|
+
body {
|
18
|
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
19
|
+
background: linear-gradient(135deg, #0970ce 0%, #0359a9 50%, #1f2937 100%);
|
20
|
+
min-height: 100vh;
|
21
|
+
color: white;
|
22
|
+
line-height: 1.6;
|
23
|
+
}
|
24
|
+
|
25
|
+
.container {
|
26
|
+
min-height: 100vh;
|
27
|
+
display: flex;
|
28
|
+
flex-direction: column;
|
29
|
+
align-items: center;
|
30
|
+
justify-content: center;
|
31
|
+
padding: 2rem;
|
32
|
+
max-width: 1200px;
|
33
|
+
margin: 0 auto;
|
34
|
+
}
|
35
|
+
|
36
|
+
.header {
|
37
|
+
text-align: center;
|
38
|
+
margin-bottom: 3rem;
|
39
|
+
}
|
40
|
+
|
41
|
+
.logo-section {
|
42
|
+
display: flex;
|
43
|
+
align-items: center;
|
44
|
+
justify-content: center;
|
45
|
+
margin-bottom: 1.5rem;
|
46
|
+
}
|
47
|
+
|
48
|
+
.logo {
|
49
|
+
width: 4rem;
|
50
|
+
height: 4rem;
|
51
|
+
margin-right: 1rem;
|
52
|
+
position: relative;
|
53
|
+
}
|
54
|
+
|
55
|
+
.logo img {
|
56
|
+
position: relative;
|
57
|
+
width: 2.5rem;
|
58
|
+
height: auto;
|
59
|
+
transform: rotate(315deg);
|
60
|
+
}
|
61
|
+
|
62
|
+
.logo-cube {
|
63
|
+
position: absolute;
|
64
|
+
inset: 0;
|
65
|
+
transform: rotate(45deg);
|
66
|
+
background: #065bae;
|
67
|
+
border: 4px solid #85c0f6;
|
68
|
+
border-radius: 0.5rem;
|
69
|
+
animation: spin 10s linear infinite;
|
70
|
+
}
|
71
|
+
|
72
|
+
.logo-inner {
|
73
|
+
position: absolute;
|
74
|
+
inset: 0.5rem;
|
75
|
+
transform: rotate(45deg);
|
76
|
+
background: #ffffff;
|
77
|
+
border-radius: 0.25rem;
|
78
|
+
}
|
79
|
+
|
80
|
+
@keyframes spin {
|
81
|
+
from {
|
82
|
+
transform: rotate(45deg);
|
83
|
+
}
|
84
|
+
|
85
|
+
to {
|
86
|
+
transform: rotate(405deg);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
.logo-text {
|
91
|
+
font-size: 3rem;
|
92
|
+
font-weight: 700;
|
93
|
+
color: white;
|
94
|
+
letter-spacing: 0.05em;
|
95
|
+
}
|
96
|
+
|
97
|
+
.tagline {
|
98
|
+
font-size: 1.125rem;
|
99
|
+
color: #afd2f3;
|
100
|
+
max-width: 42rem;
|
101
|
+
margin: 0 auto;
|
102
|
+
}
|
103
|
+
|
104
|
+
.grid {
|
105
|
+
display: grid;
|
106
|
+
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
107
|
+
gap: 2rem;
|
108
|
+
width: 100%;
|
109
|
+
max-width: 1000px;
|
110
|
+
}
|
111
|
+
|
112
|
+
.card {
|
113
|
+
background: rgba(31, 41, 55, 0.9);
|
114
|
+
backdrop-filter: blur(10px);
|
115
|
+
border-radius: 1rem;
|
116
|
+
padding: 2rem;
|
117
|
+
border: 1px solid rgba(55, 65, 81, 0.5);
|
118
|
+
transition: all 0.3s ease;
|
119
|
+
position: relative;
|
120
|
+
overflow: hidden;
|
121
|
+
}
|
122
|
+
|
123
|
+
.card:hover {
|
124
|
+
border-color: rgba(56, 163, 255, 0.8);
|
125
|
+
transform: translateY(-5px);
|
126
|
+
}
|
127
|
+
|
128
|
+
.card-header {
|
129
|
+
display: flex;
|
130
|
+
align-items: center;
|
131
|
+
margin-bottom: 1.5rem;
|
132
|
+
}
|
133
|
+
|
134
|
+
.card-icon {
|
135
|
+
width: 3rem;
|
136
|
+
height: 3rem;
|
137
|
+
border-radius: 0.5rem;
|
138
|
+
background: rgba(4, 95, 178, 0.4);
|
139
|
+
display: flex;
|
140
|
+
align-items: center;
|
141
|
+
justify-content: center;
|
142
|
+
margin-right: 1rem;
|
143
|
+
}
|
144
|
+
|
145
|
+
.card-icon svg {
|
146
|
+
width: 1.5rem;
|
147
|
+
height: 1.5rem;
|
148
|
+
color: #85c0f6;
|
149
|
+
}
|
150
|
+
|
151
|
+
.card-title {
|
152
|
+
font-size: 1.5rem;
|
153
|
+
font-weight: 600;
|
154
|
+
color: white;
|
155
|
+
}
|
156
|
+
|
157
|
+
.card-content {
|
158
|
+
color: #d1d5db;
|
159
|
+
margin-bottom: 1.5rem;
|
160
|
+
line-height: 1.7;
|
161
|
+
}
|
162
|
+
|
163
|
+
.card-link {
|
164
|
+
display: inline-flex;
|
165
|
+
align-items: center;
|
166
|
+
color: #85c0f6;
|
167
|
+
text-decoration: none;
|
168
|
+
font-weight: 500;
|
169
|
+
transition: color 0.3s ease;
|
170
|
+
}
|
171
|
+
|
172
|
+
.card-link:hover {
|
173
|
+
color: #1a88ee;
|
174
|
+
}
|
175
|
+
|
176
|
+
.card-link svg {
|
177
|
+
width: 1rem;
|
178
|
+
height: 1rem;
|
179
|
+
margin-left: 0.5rem;
|
180
|
+
transition: transform 0.3s ease;
|
181
|
+
}
|
182
|
+
|
183
|
+
.card:hover .card-link svg {
|
184
|
+
transform: translateX(0.25rem);
|
185
|
+
}
|
186
|
+
|
187
|
+
.footer {
|
188
|
+
margin-top: 4rem;
|
189
|
+
display: flex;
|
190
|
+
align-items: center;
|
191
|
+
gap: 2rem;
|
192
|
+
color: #9ca3af;
|
193
|
+
font-size: 0.875rem;
|
194
|
+
flex-wrap: wrap;
|
195
|
+
justify-content: center;
|
196
|
+
}
|
197
|
+
|
198
|
+
.footer-link {
|
199
|
+
display: flex;
|
200
|
+
align-items: center;
|
201
|
+
color: #9ca3af;
|
202
|
+
text-decoration: none;
|
203
|
+
transition: color 0.3s ease;
|
204
|
+
}
|
205
|
+
|
206
|
+
.footer-link:hover {
|
207
|
+
color: #85c0f6;
|
208
|
+
}
|
209
|
+
|
210
|
+
.footer-link svg {
|
211
|
+
width: 1.25rem;
|
212
|
+
height: 1.25rem;
|
213
|
+
margin-right: 0.5rem;
|
214
|
+
}
|
215
|
+
|
216
|
+
@media (max-width: 768px) {
|
217
|
+
.logo-section {
|
218
|
+
flex-direction: column;
|
219
|
+
gap: 1rem;
|
220
|
+
}
|
221
|
+
|
222
|
+
.logo-text {
|
223
|
+
font-size: 2.5rem;
|
224
|
+
}
|
225
|
+
|
226
|
+
.tagline {
|
227
|
+
font-size: 1rem;
|
228
|
+
}
|
229
|
+
|
230
|
+
.container {
|
231
|
+
padding: 1rem;
|
232
|
+
}
|
233
|
+
|
234
|
+
.footer {
|
235
|
+
flex-direction: column;
|
236
|
+
gap: 1rem;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
</style>
|
240
|
+
</head>
|
241
|
+
|
242
|
+
<body>
|
243
|
+
<div class="container">
|
244
|
+
<!-- Header Section -->
|
245
|
+
<div class="header">
|
246
|
+
<div class="logo-section">
|
247
|
+
<div class="logo">
|
248
|
+
<div class="logo-cube"></div>
|
249
|
+
<div class="logo-inner">
|
250
|
+
<img src="{{ asset('h3ravel-logo.svg') }}" />
|
251
|
+
</div>
|
252
|
+
</div>
|
253
|
+
<h1 class="logo-text">H3ravel</h1>
|
254
|
+
</div>
|
255
|
+
<p class="tagline">
|
256
|
+
A modern TypeScript runtime-agnostic web framework built on top of H3,
|
257
|
+
designed to bring the elegance and developer experience of Laravel to
|
258
|
+
the JavaScript ecosystem.
|
259
|
+
</p>
|
260
|
+
</div>
|
261
|
+
|
262
|
+
<!-- Main Grid -->
|
263
|
+
<div class="grid">
|
264
|
+
<!-- Documentation Card -->
|
265
|
+
<div class="card">
|
266
|
+
<div class="card-header">
|
267
|
+
<div class="card-icon">
|
268
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
269
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
270
|
+
d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.746 0 3.332.477 4.5 1.253v13C20.168 18.477 18.582 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
|
271
|
+
</svg>
|
272
|
+
</div>
|
273
|
+
<h2 class="card-title">Documentation</h2>
|
274
|
+
</div>
|
275
|
+
<p class="card-content">
|
276
|
+
H3ravel has comprehensive documentation covering every aspect of the framework.
|
277
|
+
Whether you are new to the framework or have previous experience with Laravel,
|
278
|
+
we recommend reading all of the documentation from beginning to end.
|
279
|
+
</p>
|
280
|
+
<a href="{{ links.documentation }}" class="card-link">
|
281
|
+
Read Documentation
|
282
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
283
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
284
|
+
</svg>
|
285
|
+
</a>
|
286
|
+
</div>
|
287
|
+
|
288
|
+
<!-- TypeScript First Card -->
|
289
|
+
<div class="card">
|
290
|
+
<div class="card-header">
|
291
|
+
<div class="card-icon">
|
292
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
293
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
294
|
+
d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
|
295
|
+
</svg>
|
296
|
+
</div>
|
297
|
+
<h2 class="card-title">TypeScript First</h2>
|
298
|
+
</div>
|
299
|
+
<p class="card-content">
|
300
|
+
Built with TypeScript from the ground up, H3ravel provides excellent developer experience
|
301
|
+
with full type safety, IntelliSense support, and seamless integration with the modern
|
302
|
+
JavaScript ecosystem including Bun, Node.js, and Deno.
|
303
|
+
</p>
|
304
|
+
<a href="{{ links.features }}" class="card-link">
|
305
|
+
Explore TypeScript Features
|
306
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
307
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
308
|
+
</svg>
|
309
|
+
</a>
|
310
|
+
</div>
|
311
|
+
|
312
|
+
<!-- High Performance Card -->
|
313
|
+
<div class="card">
|
314
|
+
<div class="card-header">
|
315
|
+
<div class="card-icon">
|
316
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
317
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
|
318
|
+
</svg>
|
319
|
+
</div>
|
320
|
+
<h2 class="card-title">High Performance</h2>
|
321
|
+
</div>
|
322
|
+
<p class="card-content">
|
323
|
+
Leveraging the power of H3's universal HTTP framework, H3ravel delivers exceptional
|
324
|
+
performance with minimal overhead. Features include auto-imports, hot module replacement,
|
325
|
+
and optimized bundling for lightning-fast development and production builds.
|
326
|
+
</p>
|
327
|
+
<a href="{{ links.performance }}" class="card-link">
|
328
|
+
Learn About Performance
|
329
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
330
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
331
|
+
</svg>
|
332
|
+
</a>
|
333
|
+
</div>
|
334
|
+
|
335
|
+
<!-- H3 Foundation Card -->
|
336
|
+
<div class="card">
|
337
|
+
<div class="card-header">
|
338
|
+
<div class="card-icon">
|
339
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
340
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
341
|
+
d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9" />
|
342
|
+
</svg>
|
343
|
+
</div>
|
344
|
+
<h2 class="card-title">H3 Foundation</h2>
|
345
|
+
</div>
|
346
|
+
<p class="card-content">
|
347
|
+
Built on top of H3's minimal and high-performance HTTP framework, H3ravel provides
|
348
|
+
familiar Laravel-style APIs while maintaining compatibility with the broader H3 ecosystem.
|
349
|
+
Deploy anywhere H3 runs - serverless functions, edge workers, or traditional servers.
|
350
|
+
</p>
|
351
|
+
<a href="{{ links.integration }}" class="card-link">
|
352
|
+
Discover H3 Integration
|
353
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
354
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
355
|
+
</svg>
|
356
|
+
</a>
|
357
|
+
</div>
|
358
|
+
</div>
|
359
|
+
|
360
|
+
<!-- Footer -->
|
361
|
+
<div class="footer">
|
362
|
+
<a href="https://github.com/h3ravel/h3ravel" class="footer-link" target="_blank">
|
363
|
+
<svg fill="currentColor" viewBox="0 0 24 24">
|
364
|
+
<path
|
365
|
+
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
366
|
+
</svg>
|
367
|
+
GitHub
|
368
|
+
</a>
|
369
|
+
<a href="https://github.com/h3ravel/h3ravel" class="footer-link" target="_blank">
|
370
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
371
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
372
|
+
d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" />
|
373
|
+
</svg>
|
374
|
+
Sponsor
|
375
|
+
</a>
|
376
|
+
<span>H3ravel v{{ app.getVersion('app') }} (TypeScript v{{ app.getVersion('ts') }})</span>
|
377
|
+
</div>
|
378
|
+
</div>
|
379
|
+
|
380
|
+
<script src="{{ asset('main.js') }}"></script>
|
381
|
+
</body>
|
382
|
+
|
383
|
+
</html>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { AuthMiddleware } from "../http/middlewares/AuthMiddleware"
|
2
|
+
import { Router } from "@h3ravel/router"
|
3
|
+
import { UserController } from '../http/controllers/UserController'
|
4
|
+
|
5
|
+
export default (router: Router) => {
|
6
|
+
router.group({
|
7
|
+
prefix: '/', middleware: [
|
8
|
+
(event) => {
|
9
|
+
console.log(`Incoming request`)
|
10
|
+
}
|
11
|
+
]
|
12
|
+
}, () => {
|
13
|
+
router.apiResource('/users', UserController, [new AuthMiddleware()])
|
14
|
+
})
|
15
|
+
|
16
|
+
router.get('/hello', () => 'Hello', 'hello.route')
|
17
|
+
}
|
File without changes
|
package/package.json
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"name": "h3ravel-monorepo",
|
3
|
+
"private": false,
|
4
|
+
"version": "0.1.1",
|
5
|
+
"description": "Monorepo for H3ravel, a modern TypeScript runtime-agnostic web framework built on H3.",
|
6
|
+
"type": "module",
|
7
|
+
"devDependencies": {
|
8
|
+
"@changesets/cli": "^2.29.5",
|
9
|
+
"@eslint/js": "^9.32.0",
|
10
|
+
"@swc/core": "^1.13.3",
|
11
|
+
"@types/node": "^24.1.0",
|
12
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
13
|
+
"@typescript-eslint/parser": "^8.0.0",
|
14
|
+
"barrelsby": "^2.8.1",
|
15
|
+
"eslint": "^9.0.0",
|
16
|
+
"husky": "^9.0.0",
|
17
|
+
"path": "^0.12.7",
|
18
|
+
"tsup": "^8.5.0",
|
19
|
+
"tsx": "^4.20.3",
|
20
|
+
"typescript": "^5.4.0",
|
21
|
+
"typescript-eslint": "^8.38.0",
|
22
|
+
"vitest": "^3.0.0"
|
23
|
+
},
|
24
|
+
"scripts": {
|
25
|
+
"barrel": "pnpm -r --filter './packages/*' run barrel",
|
26
|
+
"build": "pnpm barrel && pnpm -r --workspace-concurrency=1 --filter './packages/*' run build",
|
27
|
+
"dev": "pnpm barrel && pnpm -r --parallel --filter './packages/*' run dev",
|
28
|
+
"start": "pnpm --filter @h3ravel/core start",
|
29
|
+
"lint": "pnpm -r --filter './packages/*' run lint",
|
30
|
+
"test": "pnpm -r --filter './packages/*' run test",
|
31
|
+
"postinstall": "pnpm barrel",
|
32
|
+
"undev": "tsx watch packages/core/src/main.ts",
|
33
|
+
"cleanup": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +",
|
34
|
+
"release": "pnpm build && pnpm changeset version && pnpm changeset publish"
|
35
|
+
}
|
36
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
3
|
+
|
4
|
+
case `uname` in
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
8
|
+
fi
|
9
|
+
;;
|
10
|
+
esac
|
11
|
+
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
13
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules"
|
14
|
+
else
|
15
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules:$NODE_PATH"
|
16
|
+
fi
|
17
|
+
if [ -x "$basedir/node" ]; then
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
19
|
+
else
|
20
|
+
exec node "$basedir/../typescript/bin/tsc" "$@"
|
21
|
+
fi
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
3
|
+
|
4
|
+
case `uname` in
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
8
|
+
fi
|
9
|
+
;;
|
10
|
+
esac
|
11
|
+
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
13
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules"
|
14
|
+
else
|
15
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules:$NODE_PATH"
|
16
|
+
fi
|
17
|
+
if [ -x "$basedir/node" ]; then
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
19
|
+
else
|
20
|
+
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
21
|
+
fi
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"name": "@h3ravel/cache",
|
3
|
+
"version": "0.1.1",
|
4
|
+
"description": "Cache system with multiple drivers for H3ravel.",
|
5
|
+
"type": "module",
|
6
|
+
"main": "dist/index.js",
|
7
|
+
"types": "dist/index.d.ts",
|
8
|
+
"publishConfig": {
|
9
|
+
"access": "public"
|
10
|
+
},
|
11
|
+
"scripts": {
|
12
|
+
"barrel": "barrelsby --directory src --delete --singleQuotes",
|
13
|
+
"build": "tsup",
|
14
|
+
"dev": "tsx watch src/index.ts",
|
15
|
+
"start": "node dist/index.js",
|
16
|
+
"lint": "eslint . --ext .ts",
|
17
|
+
"test": "vitest"
|
18
|
+
},
|
19
|
+
"dependencies": {
|
20
|
+
"@h3ravel/core": "workspace:*",
|
21
|
+
"h3": "^2.0.0-beta.1"
|
22
|
+
},
|
23
|
+
"devDependencies": {
|
24
|
+
"typescript": "^5.4.0"
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export default class { }
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
export default class { }
|
@@ -0,0 +1 @@
|
|
1
|
+
export default class { }
|
@@ -0,0 +1 @@
|
|
1
|
+
export default class { }
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { ServiceProvider } from '@h3ravel/core'
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Cache drivers and utilities.
|
5
|
+
*
|
6
|
+
* Bind CacheManager.
|
7
|
+
* Load drivers (memory, Redis).
|
8
|
+
* Provide Cache facade.
|
9
|
+
*
|
10
|
+
* Auto-Registered if @h3ravel/cache is installed.
|
11
|
+
*/
|
12
|
+
export class CacheServiceProvider extends ServiceProvider {
|
13
|
+
register () {
|
14
|
+
// Core bindings
|
15
|
+
}
|
16
|
+
}
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
3
|
+
|
4
|
+
case `uname` in
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
8
|
+
fi
|
9
|
+
;;
|
10
|
+
esac
|
11
|
+
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
13
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules"
|
14
|
+
else
|
15
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules:$NODE_PATH"
|
16
|
+
fi
|
17
|
+
if [ -x "$basedir/node" ]; then
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
19
|
+
else
|
20
|
+
exec node "$basedir/../typescript/bin/tsc" "$@"
|
21
|
+
fi
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
3
|
+
|
4
|
+
case `uname` in
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
8
|
+
fi
|
9
|
+
;;
|
10
|
+
esac
|
11
|
+
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
13
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules"
|
14
|
+
else
|
15
|
+
export NODE_PATH="/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/typescript@5.8.3/node_modules:/Users/ralph/Documents/Marx/Toneflix/OpenSource/H3ravel/framework/node_modules/.pnpm/node_modules:$NODE_PATH"
|
16
|
+
fi
|
17
|
+
if [ -x "$basedir/node" ]; then
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
19
|
+
else
|
20
|
+
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
21
|
+
fi
|