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.
Files changed (222) hide show
  1. package/README.md +43 -98
  2. package/dist/api/audits/index.d.ts +240 -240
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +2 -2
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +185 -185
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +2 -2
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +245 -245
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/notifications/index.browser.js +4 -4
  13. package/dist/api/notifications/index.browser.js.map +1 -1
  14. package/dist/api/notifications/index.d.ts +74 -74
  15. package/dist/api/notifications/index.d.ts.map +1 -1
  16. package/dist/api/notifications/index.js +4 -4
  17. package/dist/api/notifications/index.js.map +1 -1
  18. package/dist/api/parameters/index.d.ts +221 -221
  19. package/dist/api/parameters/index.d.ts.map +1 -1
  20. package/dist/api/users/index.d.ts +1632 -1631
  21. package/dist/api/users/index.d.ts.map +1 -1
  22. package/dist/api/users/index.js +26 -34
  23. package/dist/api/users/index.js.map +1 -1
  24. package/dist/api/verifications/index.d.ts +132 -132
  25. package/dist/api/verifications/index.d.ts.map +1 -1
  26. package/dist/batch/index.d.ts +122 -122
  27. package/dist/batch/index.d.ts.map +1 -1
  28. package/dist/bucket/index.d.ts +163 -163
  29. package/dist/bucket/index.d.ts.map +1 -1
  30. package/dist/cache/core/index.d.ts +46 -46
  31. package/dist/cache/core/index.d.ts.map +1 -1
  32. package/dist/cache/redis/index.d.ts.map +1 -1
  33. package/dist/cache/redis/index.js +2 -2
  34. package/dist/cache/redis/index.js.map +1 -1
  35. package/dist/cli/index.d.ts +5933 -201
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +609 -169
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/command/index.d.ts +296 -296
  40. package/dist/command/index.d.ts.map +1 -1
  41. package/dist/command/index.js +19 -19
  42. package/dist/command/index.js.map +1 -1
  43. package/dist/core/index.browser.js +268 -79
  44. package/dist/core/index.browser.js.map +1 -1
  45. package/dist/core/index.d.ts +768 -694
  46. package/dist/core/index.d.ts.map +1 -1
  47. package/dist/core/index.js +268 -79
  48. package/dist/core/index.js.map +1 -1
  49. package/dist/core/index.native.js +268 -79
  50. package/dist/core/index.native.js.map +1 -1
  51. package/dist/datetime/index.d.ts +44 -44
  52. package/dist/datetime/index.d.ts.map +1 -1
  53. package/dist/email/index.d.ts +25 -25
  54. package/dist/email/index.d.ts.map +1 -1
  55. package/dist/fake/index.d.ts +5409 -5409
  56. package/dist/fake/index.d.ts.map +1 -1
  57. package/dist/fake/index.js +22 -22
  58. package/dist/fake/index.js.map +1 -1
  59. package/dist/file/index.d.ts +435 -435
  60. package/dist/file/index.d.ts.map +1 -1
  61. package/dist/lock/core/index.d.ts +208 -208
  62. package/dist/lock/core/index.d.ts.map +1 -1
  63. package/dist/lock/redis/index.d.ts.map +1 -1
  64. package/dist/logger/index.d.ts +24 -24
  65. package/dist/logger/index.d.ts.map +1 -1
  66. package/dist/logger/index.js +1 -5
  67. package/dist/logger/index.js.map +1 -1
  68. package/dist/mcp/index.d.ts +216 -198
  69. package/dist/mcp/index.d.ts.map +1 -1
  70. package/dist/mcp/index.js +28 -4
  71. package/dist/mcp/index.js.map +1 -1
  72. package/dist/orm/index.browser.js +9 -9
  73. package/dist/orm/index.browser.js.map +1 -1
  74. package/dist/orm/index.bun.js +83 -76
  75. package/dist/orm/index.bun.js.map +1 -1
  76. package/dist/orm/index.d.ts +961 -960
  77. package/dist/orm/index.d.ts.map +1 -1
  78. package/dist/orm/index.js +88 -81
  79. package/dist/orm/index.js.map +1 -1
  80. package/dist/queue/core/index.d.ts +244 -244
  81. package/dist/queue/core/index.d.ts.map +1 -1
  82. package/dist/queue/redis/index.d.ts.map +1 -1
  83. package/dist/redis/index.d.ts +105 -105
  84. package/dist/redis/index.d.ts.map +1 -1
  85. package/dist/retry/index.d.ts +69 -69
  86. package/dist/retry/index.d.ts.map +1 -1
  87. package/dist/router/index.d.ts +6 -6
  88. package/dist/router/index.d.ts.map +1 -1
  89. package/dist/scheduler/index.d.ts +108 -26
  90. package/dist/scheduler/index.d.ts.map +1 -1
  91. package/dist/scheduler/index.js +393 -1
  92. package/dist/scheduler/index.js.map +1 -1
  93. package/dist/security/index.d.ts +532 -209
  94. package/dist/security/index.d.ts.map +1 -1
  95. package/dist/security/index.js +1422 -11
  96. package/dist/security/index.js.map +1 -1
  97. package/dist/server/auth/index.d.ts +1296 -271
  98. package/dist/server/auth/index.d.ts.map +1 -1
  99. package/dist/server/auth/index.js +1249 -18
  100. package/dist/server/auth/index.js.map +1 -1
  101. package/dist/server/cache/index.d.ts +56 -56
  102. package/dist/server/cache/index.d.ts.map +1 -1
  103. package/dist/server/compress/index.d.ts +3 -3
  104. package/dist/server/compress/index.d.ts.map +1 -1
  105. package/dist/server/cookies/index.d.ts +6 -6
  106. package/dist/server/cookies/index.d.ts.map +1 -1
  107. package/dist/server/core/index.d.ts +196 -186
  108. package/dist/server/core/index.d.ts.map +1 -1
  109. package/dist/server/core/index.js +43 -27
  110. package/dist/server/core/index.js.map +1 -1
  111. package/dist/server/cors/index.d.ts +11 -11
  112. package/dist/server/cors/index.d.ts.map +1 -1
  113. package/dist/server/health/index.d.ts.map +1 -1
  114. package/dist/server/helmet/index.d.ts +2 -2
  115. package/dist/server/helmet/index.d.ts.map +1 -1
  116. package/dist/server/links/index.browser.js +9 -1
  117. package/dist/server/links/index.browser.js.map +1 -1
  118. package/dist/server/links/index.d.ts +83 -83
  119. package/dist/server/links/index.d.ts.map +1 -1
  120. package/dist/server/links/index.js +13 -5
  121. package/dist/server/links/index.js.map +1 -1
  122. package/dist/server/metrics/index.d.ts +514 -1
  123. package/dist/server/metrics/index.d.ts.map +1 -1
  124. package/dist/server/metrics/index.js +4462 -4
  125. package/dist/server/metrics/index.js.map +1 -1
  126. package/dist/server/multipart/index.d.ts +6 -6
  127. package/dist/server/multipart/index.d.ts.map +1 -1
  128. package/dist/server/proxy/index.d.ts +102 -102
  129. package/dist/server/proxy/index.d.ts.map +1 -1
  130. package/dist/server/rate-limit/index.d.ts +16 -16
  131. package/dist/server/rate-limit/index.d.ts.map +1 -1
  132. package/dist/server/static/index.d.ts +44 -44
  133. package/dist/server/static/index.d.ts.map +1 -1
  134. package/dist/server/swagger/index.d.ts +47 -47
  135. package/dist/server/swagger/index.d.ts.map +1 -1
  136. package/dist/sms/index.d.ts +11 -11
  137. package/dist/sms/index.d.ts.map +1 -1
  138. package/dist/sms/index.js +3 -3
  139. package/dist/sms/index.js.map +1 -1
  140. package/dist/thread/index.d.ts +71 -71
  141. package/dist/thread/index.d.ts.map +1 -1
  142. package/dist/thread/index.js +2 -2
  143. package/dist/thread/index.js.map +1 -1
  144. package/dist/topic/core/index.d.ts +318 -318
  145. package/dist/topic/core/index.d.ts.map +1 -1
  146. package/dist/topic/redis/index.d.ts +6 -6
  147. package/dist/topic/redis/index.d.ts.map +1 -1
  148. package/dist/vite/index.d.ts +2324 -1719
  149. package/dist/vite/index.d.ts.map +1 -1
  150. package/dist/vite/index.js +123 -475
  151. package/dist/vite/index.js.map +1 -1
  152. package/dist/websocket/index.browser.js +3 -3
  153. package/dist/websocket/index.browser.js.map +1 -1
  154. package/dist/websocket/index.d.ts +275 -275
  155. package/dist/websocket/index.d.ts.map +1 -1
  156. package/dist/websocket/index.js +3 -3
  157. package/dist/websocket/index.js.map +1 -1
  158. package/package.json +9 -9
  159. package/src/api/users/services/SessionService.ts +0 -10
  160. package/src/cli/apps/AlephaCli.ts +2 -2
  161. package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -1
  162. package/src/cli/assets/apiHelloControllerTs.ts +2 -1
  163. package/src/cli/assets/biomeJson.ts +2 -1
  164. package/src/cli/assets/claudeMd.ts +9 -4
  165. package/src/cli/assets/dummySpecTs.ts +2 -1
  166. package/src/cli/assets/editorconfig.ts +2 -1
  167. package/src/cli/assets/mainBrowserTs.ts +2 -1
  168. package/src/cli/assets/mainCss.ts +24 -0
  169. package/src/cli/assets/tsconfigJson.ts +2 -1
  170. package/src/cli/assets/webAppRouterTs.ts +2 -1
  171. package/src/cli/assets/webHelloComponentTsx.ts +6 -2
  172. package/src/cli/atoms/appEntryOptions.ts +13 -0
  173. package/src/cli/atoms/buildOptions.ts +1 -1
  174. package/src/cli/atoms/changelogOptions.ts +1 -1
  175. package/src/cli/commands/build.ts +63 -47
  176. package/src/cli/commands/dev.ts +16 -33
  177. package/src/cli/commands/gen/env.ts +1 -1
  178. package/src/cli/commands/init.ts +17 -8
  179. package/src/cli/commands/lint.ts +1 -1
  180. package/src/cli/defineConfig.ts +9 -0
  181. package/src/cli/index.ts +2 -1
  182. package/src/cli/providers/AppEntryProvider.ts +131 -0
  183. package/src/cli/providers/ViteBuildProvider.ts +82 -0
  184. package/src/cli/providers/ViteDevServerProvider.ts +350 -0
  185. package/src/cli/providers/ViteTemplateProvider.ts +27 -0
  186. package/src/cli/services/AlephaCliUtils.ts +33 -2
  187. package/src/cli/services/PackageManagerUtils.ts +13 -6
  188. package/src/cli/services/ProjectScaffolder.ts +72 -49
  189. package/src/core/Alepha.ts +2 -8
  190. package/src/core/primitives/$module.ts +12 -0
  191. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
  192. package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
  193. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  194. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  195. package/src/mcp/errors/McpError.ts +30 -0
  196. package/src/mcp/index.ts +3 -0
  197. package/src/mcp/transports/SseMcpTransport.ts +16 -6
  198. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  199. package/src/orm/services/Repository.ts +11 -0
  200. package/src/server/core/index.ts +1 -1
  201. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  202. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  203. package/src/server/core/providers/NodeHttpServerProvider.ts +71 -22
  204. package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
  205. package/src/server/core/providers/ServerProvider.ts +9 -12
  206. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  207. package/src/server/links/index.browser.ts +2 -0
  208. package/src/server/links/index.ts +2 -0
  209. package/src/vite/index.ts +3 -2
  210. package/src/vite/tasks/buildClient.ts +0 -1
  211. package/src/vite/tasks/buildServer.ts +68 -21
  212. package/src/vite/tasks/copyAssets.ts +5 -4
  213. package/src/vite/tasks/generateSitemap.ts +64 -23
  214. package/src/vite/tasks/index.ts +0 -2
  215. package/src/vite/tasks/prerenderPages.ts +49 -24
  216. package/src/cli/assets/indexHtml.ts +0 -15
  217. package/src/cli/commands/format.ts +0 -23
  218. package/src/vite/helpers/boot.ts +0 -117
  219. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  220. package/src/vite/tasks/devServer.ts +0 -71
  221. package/src/vite/tasks/runAlepha.ts +0 -270
  222. /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
- Build API endpoints (Docker or Serverless), React applications (SSR, CSR or SSG), and more!
24
+ A full-stack TypeScript framework for building APIs, React apps with SSR, CLI tools, and more.
25
25
 
26
- Relies only on very few runtime dependencies. Alepha is a "one decision" framework, meaning you don't have to choose between dozens of libraries and tools.
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
- All-in-one tool that takes care of configuration, development, build, deployment, testing, etc. Convention over configuration.
31
+ Check out the [documentation](https://alepha.dev) for the full picture.
29
32
 
30
- All features are based on a DSL with strong typing and runtime validation which makes development safe, productive, and AI friendly.
33
+ ## Quick Start
31
34
 
32
- For more information, please visit the [documentation](https://alepha.dev).
35
+ **Requirements:** [Node.js](https://nodejs.org/) v22+ or [Bun](https://bun.sh/)
33
36
 
34
- ## Examples
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
- # Add required config files in the current folder
46
- $ npx alepha init
40
+ npx alepha init my-api
41
+ cd my-api
47
42
  ```
48
43
 
49
- Create a new file `src/main.ts`:
44
+ Edit `src/api/controllers/HelloController.ts`:
50
45
 
51
46
  ```ts
52
- import { run, t, Alepha } from "alepha";
47
+ import { t } from "alepha";
53
48
  import { $action } from "alepha/server";
54
49
  import { $swagger } from "alepha/server/swagger";
55
50
 
56
- class Api {
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
- sayHello = $action({
63
- path: "/hello/:name",
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
- params: t.object({
68
- // Alepha provides many built-in types.
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: async ({ params }) => {
77
- return { message: `Hello ${params.name} !` };
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
- $ npx alepha dev
72
+ npm run dev
73
+ # Open http://localhost:3000/docs/ for auto-generated API docs
96
74
  ```
97
75
 
98
- Command `alepha dev` comes with hot-reload and full TypeScript support but you can also run:
76
+ Build and run in production:
99
77
 
100
78
  ```bash
101
- $ node ./src/main.ts
102
- $ bun ./src/main.ts
79
+ npm run build
80
+ node dist # or: bun dist
103
81
  ```
104
82
 
105
- Then, open your browser at `http://localhost:3000/docs/` and enjoy your automatically generated documentation.
106
-
107
- #### Production build
83
+ ### Full-Stack React
108
84
 
109
- Once you are done, build the application for production:
85
+ In same directory, re-initialize with React support:
110
86
 
111
87
  ```bash
112
- $ npx alepha build
88
+ npx alepha init --react
113
89
  ```
114
90
 
115
- Application will be built in the `dist/` folder, ready to be deployed on any platform (Docker, Serverless, etc.).
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
- ```bash
123
- $ npx alepha init --react
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(AppRouter);
100
+ alepha.with(ApiModule); // API endpoints
101
+ alepha.with(WebModule); // React pages
155
102
 
156
103
  run(alepha);
157
104
  ```
158
105
 
159
- Run the development server:
106
+ Start development server:
160
107
 
161
108
  ```bash
162
- $ npx alepha dev
109
+ npm run dev
110
+ # Open http://localhost:3000/
163
111
  ```
164
112
 
165
- Open your browser at `http://localhost:5173/` and see your React application in action.
166
-
167
- ## What's next?
113
+ ## Learn More
168
114
 
169
- - Dive into the [full docs](https://alepha.dev) for more advanced stuff
170
- - Browse the GitHub repo for examples and source code
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