alepha 0.15.0 → 0.15.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/README.md +43 -98
- package/dist/api/audits/index.d.ts +240 -240
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +2 -2
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +185 -185
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +2 -2
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +245 -245
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/notifications/index.browser.js +4 -4
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +74 -74
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +4 -4
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +221 -221
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/users/index.d.ts +1632 -1631
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +26 -34
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +132 -132
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/batch/index.d.ts +122 -122
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/bucket/index.d.ts +163 -163
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/cache/core/index.d.ts +46 -46
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cache/redis/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/cli/index.d.ts +5933 -201
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +609 -169
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +296 -296
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +19 -19
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +268 -79
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +768 -694
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +268 -79
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +268 -79
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +44 -44
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/email/index.d.ts +25 -25
- package/dist/email/index.d.ts.map +1 -1
- package/dist/fake/index.d.ts +5409 -5409
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/fake/index.js +22 -22
- package/dist/fake/index.js.map +1 -1
- package/dist/file/index.d.ts +435 -435
- package/dist/file/index.d.ts.map +1 -1
- package/dist/lock/core/index.d.ts +208 -208
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +24 -24
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +1 -5
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +216 -198
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +28 -4
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.browser.js +9 -9
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +83 -76
- package/dist/orm/index.bun.js.map +1 -1
- package/dist/orm/index.d.ts +961 -960
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +88 -81
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +244 -244
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/redis/index.d.ts +105 -105
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/retry/index.d.ts +69 -69
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/router/index.d.ts +6 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +108 -26
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +393 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +532 -209
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1422 -11
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +1296 -271
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +1249 -18
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +56 -56
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/compress/index.d.ts +3 -3
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/cookies/index.d.ts +6 -6
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/core/index.d.ts +196 -186
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +43 -27
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +11 -11
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/helmet/index.d.ts +2 -2
- package/dist/server/helmet/index.d.ts.map +1 -1
- package/dist/server/links/index.browser.js +9 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +83 -83
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +13 -5
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts +514 -1
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/metrics/index.js +4462 -4
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/multipart/index.d.ts +6 -6
- package/dist/server/multipart/index.d.ts.map +1 -1
- package/dist/server/proxy/index.d.ts +102 -102
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.d.ts +16 -16
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/static/index.d.ts +44 -44
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/swagger/index.d.ts +47 -47
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/sms/index.d.ts +11 -11
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +3 -3
- package/dist/sms/index.js.map +1 -1
- package/dist/thread/index.d.ts +71 -71
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/thread/index.js +2 -2
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/core/index.d.ts +318 -318
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/redis/index.d.ts +6 -6
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/vite/index.d.ts +2324 -1719
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +123 -475
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +3 -3
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +275 -275
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +3 -3
- package/dist/websocket/index.js.map +1 -1
- package/package.json +9 -9
- package/src/api/users/services/SessionService.ts +0 -10
- package/src/cli/apps/AlephaCli.ts +2 -2
- package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -1
- package/src/cli/assets/apiHelloControllerTs.ts +2 -1
- package/src/cli/assets/biomeJson.ts +2 -1
- package/src/cli/assets/claudeMd.ts +9 -4
- package/src/cli/assets/dummySpecTs.ts +2 -1
- package/src/cli/assets/editorconfig.ts +2 -1
- package/src/cli/assets/mainBrowserTs.ts +2 -1
- package/src/cli/assets/mainCss.ts +24 -0
- package/src/cli/assets/tsconfigJson.ts +2 -1
- package/src/cli/assets/webAppRouterTs.ts +2 -1
- package/src/cli/assets/webHelloComponentTsx.ts +6 -2
- package/src/cli/atoms/appEntryOptions.ts +13 -0
- package/src/cli/atoms/buildOptions.ts +1 -1
- package/src/cli/atoms/changelogOptions.ts +1 -1
- package/src/cli/commands/build.ts +63 -47
- package/src/cli/commands/dev.ts +16 -33
- package/src/cli/commands/gen/env.ts +1 -1
- package/src/cli/commands/init.ts +17 -8
- package/src/cli/commands/lint.ts +1 -1
- package/src/cli/defineConfig.ts +9 -0
- package/src/cli/index.ts +2 -1
- package/src/cli/providers/AppEntryProvider.ts +131 -0
- package/src/cli/providers/ViteBuildProvider.ts +82 -0
- package/src/cli/providers/ViteDevServerProvider.ts +350 -0
- package/src/cli/providers/ViteTemplateProvider.ts +27 -0
- package/src/cli/services/AlephaCliUtils.ts +33 -2
- package/src/cli/services/PackageManagerUtils.ts +13 -6
- package/src/cli/services/ProjectScaffolder.ts +72 -49
- package/src/core/Alepha.ts +2 -8
- package/src/core/primitives/$module.ts +12 -0
- package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
- package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
- package/src/core/providers/SchemaValidator.spec.ts +236 -0
- package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
- package/src/mcp/errors/McpError.ts +30 -0
- package/src/mcp/index.ts +3 -0
- package/src/mcp/transports/SseMcpTransport.ts +16 -6
- package/src/orm/providers/DrizzleKitProvider.ts +3 -5
- package/src/orm/services/Repository.ts +11 -0
- package/src/server/core/index.ts +1 -1
- package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
- package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
- package/src/server/core/providers/NodeHttpServerProvider.ts +71 -22
- package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
- package/src/server/core/providers/ServerProvider.ts +9 -12
- package/src/server/links/atoms/apiLinksAtom.ts +7 -0
- package/src/server/links/index.browser.ts +2 -0
- package/src/server/links/index.ts +2 -0
- package/src/vite/index.ts +3 -2
- package/src/vite/tasks/buildClient.ts +0 -1
- package/src/vite/tasks/buildServer.ts +68 -21
- package/src/vite/tasks/copyAssets.ts +5 -4
- package/src/vite/tasks/generateSitemap.ts +64 -23
- package/src/vite/tasks/index.ts +0 -2
- package/src/vite/tasks/prerenderPages.ts +49 -24
- package/src/cli/assets/indexHtml.ts +0 -15
- package/src/cli/commands/format.ts +0 -23
- package/src/vite/helpers/boot.ts +0 -117
- package/src/vite/plugins/viteAlephaDev.ts +0 -177
- package/src/vite/tasks/devServer.ts +0 -71
- package/src/vite/tasks/runAlepha.ts +0 -270
- /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
package/README.md
CHANGED
|
@@ -21,151 +21,96 @@ Easy mode for building TypeScript applications.
|
|
|
21
21
|
|
|
22
22
|
## What is this?
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
A full-stack TypeScript framework for building APIs, React apps with SSR, CLI tools, and more.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
- **Runs on Node.js and Bun** — switch runtimes without changing code
|
|
27
|
+
- **Zero config** — sensible defaults, override when needed
|
|
28
|
+
- **Type-safe everything** — schemas validate at runtime, TypeScript catches the rest
|
|
29
|
+
- **Single bundle deploy** — no `node_modules` in production
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
Check out the [documentation](https://alepha.dev) for the full picture.
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
## Quick Start
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
**Requirements:** [Node.js](https://nodejs.org/) v22+ or [Bun](https://bun.sh/)
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
**Requirements**
|
|
37
|
-
|
|
38
|
-
- [Node.js](https://nodejs.org/) v22 or higher
|
|
39
|
-
|
|
40
|
-
### API endpoint
|
|
41
|
-
|
|
42
|
-
Write API endpoints with automatic OpenAPI documentation.
|
|
37
|
+
### API Server
|
|
43
38
|
|
|
44
39
|
```bash
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
npx alepha init my-api
|
|
41
|
+
cd my-api
|
|
47
42
|
```
|
|
48
43
|
|
|
49
|
-
|
|
44
|
+
Edit `src/api/controllers/HelloController.ts`:
|
|
50
45
|
|
|
51
46
|
```ts
|
|
52
|
-
import {
|
|
47
|
+
import { t } from "alepha";
|
|
53
48
|
import { $action } from "alepha/server";
|
|
54
49
|
import { $swagger } from "alepha/server/swagger";
|
|
55
50
|
|
|
56
|
-
class
|
|
57
|
-
|
|
58
|
-
// Functions starting with $ are "primitives".
|
|
59
|
-
// Like React hooks, they must be called inside Alepha context.
|
|
51
|
+
export class HelloController {
|
|
60
52
|
docs = $swagger();
|
|
61
53
|
|
|
62
|
-
|
|
63
|
-
path: "/hello
|
|
64
|
-
// Every feature inside Alepha is strongly typed with runtime validation.
|
|
65
|
-
// Schema is based on TypeBox library.
|
|
54
|
+
hello = $action({
|
|
55
|
+
path: "/hello",
|
|
66
56
|
schema: {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// For example `t.text()` = `t.string()` + specific maxLength, auto-trim, etc.
|
|
70
|
-
name: t.text()
|
|
57
|
+
query: t.object({
|
|
58
|
+
name: t.optional(t.text()),
|
|
71
59
|
}),
|
|
72
60
|
response: t.object({
|
|
73
61
|
message: t.text(),
|
|
74
|
-
})
|
|
62
|
+
}),
|
|
75
63
|
},
|
|
76
|
-
handler:
|
|
77
|
-
|
|
78
|
-
}
|
|
64
|
+
handler: ({ query }) => ({
|
|
65
|
+
message: `Hello, ${query.name || "World"}!`,
|
|
66
|
+
}),
|
|
79
67
|
});
|
|
80
68
|
}
|
|
81
|
-
|
|
82
|
-
// Creating Alepha instance is like creating a new context.
|
|
83
|
-
const alepha = Alepha.create();
|
|
84
|
-
|
|
85
|
-
// And you add features by registering classes.
|
|
86
|
-
alepha.with(Api);
|
|
87
|
-
|
|
88
|
-
// `run` will take care of Alepha lifecycle (startup, graceful shutdown, etc.)
|
|
89
|
-
run(alepha);
|
|
90
69
|
```
|
|
91
70
|
|
|
92
|
-
Run the development server:
|
|
93
|
-
|
|
94
71
|
```bash
|
|
95
|
-
|
|
72
|
+
npm run dev
|
|
73
|
+
# Open http://localhost:3000/docs/ for auto-generated API docs
|
|
96
74
|
```
|
|
97
75
|
|
|
98
|
-
|
|
76
|
+
Build and run in production:
|
|
99
77
|
|
|
100
78
|
```bash
|
|
101
|
-
|
|
102
|
-
|
|
79
|
+
npm run build
|
|
80
|
+
node dist # or: bun dist
|
|
103
81
|
```
|
|
104
82
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
#### Production build
|
|
83
|
+
### Full-Stack React
|
|
108
84
|
|
|
109
|
-
|
|
85
|
+
In same directory, re-initialize with React support:
|
|
110
86
|
|
|
111
87
|
```bash
|
|
112
|
-
|
|
88
|
+
npx alepha init --react
|
|
113
89
|
```
|
|
114
90
|
|
|
115
|
-
|
|
116
|
-
Bonus, no need to "npm install" on the server, Alepha bundles everything together.
|
|
117
|
-
|
|
118
|
-
### React Application
|
|
119
|
-
|
|
120
|
-
Build full-stack React applications, with server-side rendering.
|
|
91
|
+
Your `src/main.server.ts` wires everything together:
|
|
121
92
|
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Create a file `src/main.tsx`:
|
|
127
|
-
|
|
128
|
-
```tsx
|
|
129
|
-
import { Alepha, run, t } from "alepha";
|
|
130
|
-
import { $page } from "@alepha/react/router";
|
|
131
|
-
import { useState } from "react";
|
|
132
|
-
|
|
133
|
-
const Hello = (props: { count: number }) => {
|
|
134
|
-
const [ count, setCount ] = useState(props.count);
|
|
135
|
-
return <button onClick={() => setCount(count + 1)}>Clicked: {count}</button>
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
class AppRouter {
|
|
139
|
-
index = $page({
|
|
140
|
-
schema: {
|
|
141
|
-
query: t.object({
|
|
142
|
-
start: t.number({ default: 0 }),
|
|
143
|
-
})
|
|
144
|
-
},
|
|
145
|
-
component: Hello,
|
|
146
|
-
loader: (req) => {
|
|
147
|
-
return { count: req.query.start };
|
|
148
|
-
},
|
|
149
|
-
});
|
|
150
|
-
}
|
|
93
|
+
```ts
|
|
94
|
+
import { Alepha, run } from "alepha";
|
|
95
|
+
import { ApiModule } from "./api/index.ts";
|
|
96
|
+
import { WebModule } from "./web/index.ts";
|
|
151
97
|
|
|
152
98
|
const alepha = Alepha.create();
|
|
153
99
|
|
|
154
|
-
alepha.with(
|
|
100
|
+
alepha.with(ApiModule); // API endpoints
|
|
101
|
+
alepha.with(WebModule); // React pages
|
|
155
102
|
|
|
156
103
|
run(alepha);
|
|
157
104
|
```
|
|
158
105
|
|
|
159
|
-
|
|
106
|
+
Start development server:
|
|
160
107
|
|
|
161
108
|
```bash
|
|
162
|
-
|
|
109
|
+
npm run dev
|
|
110
|
+
# Open http://localhost:3000/
|
|
163
111
|
```
|
|
164
112
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
## What's next?
|
|
113
|
+
## Learn More
|
|
168
114
|
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
- Check out the individual packages to see what else you can build
|
|
115
|
+
- [Documentation](https://alepha.dev) — guides, concepts, API reference
|
|
116
|
+
- [GitHub](https://github.com/feunard/alepha) — source code and issues
|