alepha 0.15.2 → 0.15.3
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/README.md +68 -80
- package/dist/api/audits/index.d.ts +332 -332
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +170 -170
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/jobs/index.d.ts +151 -151
- package/dist/api/keys/index.d.ts +195 -195
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/parameters/index.d.ts +260 -260
- package/dist/api/users/index.d.ts +22 -11
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +7 -2
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +128 -128
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/bucket/index.d.ts +8 -0
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +7 -2
- package/dist/bucket/index.js.map +1 -1
- package/dist/cli/index.d.ts +191 -74
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +215 -48
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +10 -0
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +67 -13
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +28 -21
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +28 -21
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +28 -21
- package/dist/core/index.native.js.map +1 -1
- package/dist/email/index.d.ts +8 -0
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +7 -2
- package/dist/email/index.js.map +1 -1
- package/dist/mcp/index.d.ts +5 -5
- package/dist/orm/index.bun.js +32 -16
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +4 -1
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +34 -22
- package/dist/orm/index.js.map +1 -1
- package/dist/react/router/index.browser.js +9 -15
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +295 -407
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +566 -776
- package/dist/react/router/index.js.map +1 -1
- package/dist/redis/index.d.ts +19 -19
- package/dist/security/index.d.ts +42 -42
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +8 -7
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +167 -167
- package/dist/server/core/index.d.ts +9 -9
- package/dist/server/health/index.d.ts +17 -17
- package/dist/server/links/index.d.ts +39 -39
- package/dist/server/static/index.js +7 -2
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +8 -0
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +7 -2
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +8 -0
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +7 -2
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js +734 -12
- package/dist/system/index.browser.js.map +1 -1
- package/dist/system/index.d.ts +8 -0
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +7 -2
- package/dist/system/index.js.map +1 -1
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.js +15 -7
- package/dist/vite/index.js.map +1 -1
- package/package.json +4 -2
- package/src/api/logs/TODO.md +13 -10
- package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -0
- package/src/cli/atoms/buildOptions.ts +99 -9
- package/src/cli/commands/build.ts +149 -32
- package/src/cli/commands/db.ts +5 -7
- package/src/cli/commands/init.spec.ts +50 -6
- package/src/cli/commands/init.ts +28 -5
- package/src/cli/providers/ViteDevServerProvider.ts +1 -10
- package/src/cli/services/AlephaCliUtils.ts +16 -0
- package/src/cli/services/PackageManagerUtils.ts +2 -0
- package/src/cli/services/ProjectScaffolder.spec.ts +97 -0
- package/src/cli/services/ProjectScaffolder.ts +28 -6
- package/src/cli/templates/agentMd.ts +6 -1
- package/src/cli/templates/apiAppSecurityTs.ts +11 -0
- package/src/cli/templates/apiIndexTs.ts +18 -4
- package/src/cli/templates/webAppRouterTs.ts +25 -1
- package/src/cli/templates/webHelloComponentTsx.ts +15 -5
- package/src/command/helpers/Runner.spec.ts +135 -0
- package/src/command/helpers/Runner.ts +4 -1
- package/src/command/providers/CliProvider.spec.ts +325 -0
- package/src/command/providers/CliProvider.ts +117 -7
- package/src/core/Alepha.ts +32 -25
- package/src/orm/index.bun.ts +1 -1
- package/src/orm/index.ts +2 -6
- package/src/orm/providers/drivers/BunSqliteProvider.ts +4 -1
- package/src/orm/providers/drivers/CloudflareD1Provider.ts +57 -30
- package/src/orm/providers/drivers/DatabaseProvider.ts +9 -1
- package/src/orm/providers/drivers/NodeSqliteProvider.ts +4 -1
- package/src/react/router/hooks/useActive.ts +1 -1
- package/src/react/router/hooks/useRouter.ts +1 -1
- package/src/react/router/index.ts +4 -0
- package/src/react/router/primitives/$page.browser.spec.tsx +24 -24
- package/src/react/router/primitives/$page.spec.tsx +0 -32
- package/src/react/router/primitives/$page.ts +6 -14
- package/src/react/router/providers/ReactBrowserProvider.ts +6 -3
- package/src/react/router/providers/ReactPageProvider.ts +1 -1
- package/src/react/router/providers/ReactPreloadProvider.spec.ts +142 -0
- package/src/react/router/providers/ReactPreloadProvider.ts +85 -0
- package/src/react/router/providers/ReactServerProvider.ts +7 -78
- package/src/react/router/providers/ReactServerTemplateProvider.spec.ts +210 -0
- package/src/react/router/providers/ReactServerTemplateProvider.ts +228 -665
- package/src/react/router/services/ReactRouter.ts +13 -13
- package/src/security/__tests__/ServerSecurityProvider.spec.ts +77 -0
- package/src/security/providers/ServerSecurityProvider.ts +30 -22
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +9 -3
- package/src/system/index.browser.ts +25 -0
- package/src/system/index.workerd.ts +1 -0
- package/src/system/providers/FileSystemProvider.ts +8 -0
- package/src/system/providers/NodeFileSystemProvider.ts +11 -2
- package/src/vite/tasks/buildServer.ts +2 -12
- package/src/vite/tasks/generateCloudflare.ts +10 -7
- package/src/vite/tasks/generateDocker.ts +4 -0
package/README.md
CHANGED
|
@@ -1,116 +1,104 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<h1
|
|
2
|
+
<h1>
|
|
3
3
|
<img
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
src="https://raw.githubusercontent.com/feunard/alepha/main/apps/docs/public/icon-512.png"
|
|
5
|
+
width="128"
|
|
6
|
+
height="128"
|
|
7
|
+
alt="Alepha logo"
|
|
8
8
|
valign="middle"
|
|
9
9
|
/>
|
|
10
10
|
Alepha
|
|
11
11
|
</h1>
|
|
12
|
-
<p
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<a href="https://
|
|
16
|
-
<a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/
|
|
17
|
-
<a href="https://codecov.io/gh/feunard/alepha"><img src="https://codecov.io/gh/feunard/alepha/graph/badge.svg?token=ZDLWI514CP" alt="npm"/></a>
|
|
18
|
-
<a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/dt/alepha.svg" alt="npm"/></a>
|
|
19
|
-
<a href="https://github.com/feunard/alepha"><img src="https://img.shields.io/github/stars/feunard/alepha.svg?style=social" alt="GitHub stars"/></a>
|
|
12
|
+
<p>TypeScript Framework Made Easy</p>
|
|
13
|
+
<a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/v/alepha.svg" alt="npm version"/></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/l/alepha.svg" alt="license"/></a>
|
|
15
|
+
<a href="https://codecov.io/gh/feunard/alepha"><img src="https://codecov.io/gh/feunard/alepha/graph/badge.svg?token=ZDLWI514CP" alt="coverage"/></a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/dt/alepha.svg" alt="downloads"/></a>
|
|
20
17
|
</div>
|
|
21
18
|
|
|
22
19
|
## What is this?
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
Full-stack TypeScript framework. Node.js and Bun, same code.
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
You define your API with `$action`, your DB with `$entity`, jobs with `$queue`.
|
|
24
|
+
One schema handles database, validation, and TypeScript types.
|
|
25
|
+
The client gets full autocomplete without codegen.
|
|
26
|
+
Testing? Swap services with `.with()`, no mocking.
|
|
27
|
+
Deploy anywhere — Cloudflare, Vercel, Docker, bare metal.
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
## Example
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
**Requirements:** [Node.js](https://nodejs.org/) v22+ or [Bun](https://bun.sh/)
|
|
36
|
-
|
|
37
|
-
### API Server
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npx alepha init my-api
|
|
41
|
-
cd my-api
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Edit `src/api/controllers/HelloController.ts`:
|
|
45
|
-
|
|
46
|
-
```ts
|
|
31
|
+
```tsx
|
|
32
|
+
// src/Api.ts
|
|
47
33
|
import { t } from "alepha";
|
|
48
34
|
import { $action } from "alepha/server";
|
|
49
|
-
import { $
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
35
|
+
import { $entity, $repository, db } from "alepha/orm";
|
|
36
|
+
|
|
37
|
+
const viewEntity = $entity({
|
|
38
|
+
name: "views",
|
|
39
|
+
schema: t.object({
|
|
40
|
+
id: db.primaryKey(),
|
|
41
|
+
createdAt: db.createdAt(),
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export class Api {
|
|
46
|
+
views = $repository(viewEntity);
|
|
47
|
+
|
|
48
|
+
inc = $action({
|
|
49
|
+
schema: { response: t.object({ count: t.number() }) }, // ← validates + generates OpenAPI
|
|
50
|
+
handler: async () => {
|
|
51
|
+
await this.views.create({});
|
|
52
|
+
return { count: await this.views.count() };
|
|
63
53
|
},
|
|
64
|
-
handler: ({ query }) => ({
|
|
65
|
-
message: `Hello, ${query.name || "World"}!`,
|
|
66
|
-
}),
|
|
67
54
|
});
|
|
68
55
|
}
|
|
69
56
|
```
|
|
70
57
|
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
```tsx
|
|
59
|
+
// src/AppRouter.tsx
|
|
60
|
+
import { $client } from "alepha/server/links";
|
|
61
|
+
import { $page } from "alepha/react/router";
|
|
62
|
+
import type { Api } from "./Api.ts";
|
|
75
63
|
|
|
76
|
-
|
|
64
|
+
export class AppRouter {
|
|
65
|
+
api = $client<Api>(); // ← fully typed, zero codegen
|
|
77
66
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
67
|
+
home = $page({
|
|
68
|
+
loader: () => this.api.inc(),
|
|
69
|
+
component: (props) => <div>Counter: {props.count}</div>,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
81
72
|
```
|
|
82
73
|
|
|
83
|
-
|
|
74
|
+
## Getting Started
|
|
84
75
|
|
|
85
|
-
|
|
76
|
+
Requirements: [Node.js](https://nodejs.org/) 22+ or [Bun](https://bun.sh/) 1.3+
|
|
86
77
|
|
|
87
78
|
```bash
|
|
88
|
-
npx alepha init --
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```ts
|
|
94
|
-
import { Alepha, run } from "alepha";
|
|
95
|
-
import { ApiModule } from "./api/index.ts";
|
|
96
|
-
import { WebModule } from "./web/index.ts";
|
|
97
|
-
|
|
98
|
-
const alepha = Alepha.create();
|
|
99
|
-
|
|
100
|
-
alepha.with(ApiModule); // API endpoints
|
|
101
|
-
alepha.with(WebModule); // React pages
|
|
79
|
+
npx alepha init my-app --api # API only
|
|
80
|
+
npx alepha init my-app --react # With React
|
|
81
|
+
npx alepha init my-app --admin # Full SaaS starter
|
|
82
|
+
npx alepha init my-app --admin --ai # + AI assistant context
|
|
102
83
|
|
|
103
|
-
run
|
|
84
|
+
cd my-app && npm run dev
|
|
104
85
|
```
|
|
105
86
|
|
|
106
|
-
|
|
87
|
+
## CLI
|
|
107
88
|
|
|
108
89
|
```bash
|
|
109
|
-
|
|
110
|
-
#
|
|
90
|
+
alepha dev # Dev server with HMR
|
|
91
|
+
alepha lint # Format & lint code
|
|
92
|
+
alepha typecheck # TypeScript check
|
|
93
|
+
alepha test # Run tests
|
|
94
|
+
alepha build # Production build
|
|
95
|
+
alepha db generate # Generate migrations
|
|
96
|
+
alepha db migrate # Apply migrations
|
|
97
|
+
alepha db studio # Visual database browser
|
|
111
98
|
```
|
|
112
99
|
|
|
113
100
|
## Learn More
|
|
114
101
|
|
|
115
|
-
- [Documentation](https://alepha.dev)
|
|
116
|
-
- [
|
|
102
|
+
- [Documentation](https://alepha.dev)
|
|
103
|
+
- [llms.txt](https://alepha.dev/llms.txt) — for AI assistants
|
|
104
|
+
- [GitHub](https://github.com/feunard/alepha)
|