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.
Files changed (132) hide show
  1. package/README.md +68 -80
  2. package/dist/api/audits/index.d.ts +332 -332
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/files/index.d.ts +170 -170
  5. package/dist/api/files/index.d.ts.map +1 -1
  6. package/dist/api/jobs/index.d.ts +151 -151
  7. package/dist/api/keys/index.d.ts +195 -195
  8. package/dist/api/keys/index.d.ts.map +1 -1
  9. package/dist/api/parameters/index.d.ts +260 -260
  10. package/dist/api/users/index.d.ts +22 -11
  11. package/dist/api/users/index.d.ts.map +1 -1
  12. package/dist/api/users/index.js +7 -2
  13. package/dist/api/users/index.js.map +1 -1
  14. package/dist/api/verifications/index.d.ts +128 -128
  15. package/dist/api/verifications/index.d.ts.map +1 -1
  16. package/dist/bucket/index.d.ts +8 -0
  17. package/dist/bucket/index.d.ts.map +1 -1
  18. package/dist/bucket/index.js +7 -2
  19. package/dist/bucket/index.js.map +1 -1
  20. package/dist/cli/index.d.ts +191 -74
  21. package/dist/cli/index.d.ts.map +1 -1
  22. package/dist/cli/index.js +215 -48
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/command/index.d.ts +10 -0
  25. package/dist/command/index.d.ts.map +1 -1
  26. package/dist/command/index.js +67 -13
  27. package/dist/command/index.js.map +1 -1
  28. package/dist/core/index.browser.js +28 -21
  29. package/dist/core/index.browser.js.map +1 -1
  30. package/dist/core/index.d.ts.map +1 -1
  31. package/dist/core/index.js +28 -21
  32. package/dist/core/index.js.map +1 -1
  33. package/dist/core/index.native.js +28 -21
  34. package/dist/core/index.native.js.map +1 -1
  35. package/dist/email/index.d.ts +8 -0
  36. package/dist/email/index.d.ts.map +1 -1
  37. package/dist/email/index.js +7 -2
  38. package/dist/email/index.js.map +1 -1
  39. package/dist/mcp/index.d.ts +5 -5
  40. package/dist/orm/index.bun.js +32 -16
  41. package/dist/orm/index.bun.js.map +1 -1
  42. package/dist/orm/index.d.ts +4 -1
  43. package/dist/orm/index.d.ts.map +1 -1
  44. package/dist/orm/index.js +34 -22
  45. package/dist/orm/index.js.map +1 -1
  46. package/dist/react/router/index.browser.js +9 -15
  47. package/dist/react/router/index.browser.js.map +1 -1
  48. package/dist/react/router/index.d.ts +295 -407
  49. package/dist/react/router/index.d.ts.map +1 -1
  50. package/dist/react/router/index.js +566 -776
  51. package/dist/react/router/index.js.map +1 -1
  52. package/dist/redis/index.d.ts +19 -19
  53. package/dist/security/index.d.ts +42 -42
  54. package/dist/security/index.d.ts.map +1 -1
  55. package/dist/security/index.js +8 -7
  56. package/dist/security/index.js.map +1 -1
  57. package/dist/server/auth/index.d.ts +167 -167
  58. package/dist/server/core/index.d.ts +9 -9
  59. package/dist/server/health/index.d.ts +17 -17
  60. package/dist/server/links/index.d.ts +39 -39
  61. package/dist/server/static/index.js +7 -2
  62. package/dist/server/static/index.js.map +1 -1
  63. package/dist/server/swagger/index.d.ts +8 -0
  64. package/dist/server/swagger/index.d.ts.map +1 -1
  65. package/dist/server/swagger/index.js +7 -2
  66. package/dist/server/swagger/index.js.map +1 -1
  67. package/dist/sms/index.d.ts +8 -0
  68. package/dist/sms/index.d.ts.map +1 -1
  69. package/dist/sms/index.js +7 -2
  70. package/dist/sms/index.js.map +1 -1
  71. package/dist/system/index.browser.js +734 -12
  72. package/dist/system/index.browser.js.map +1 -1
  73. package/dist/system/index.d.ts +8 -0
  74. package/dist/system/index.d.ts.map +1 -1
  75. package/dist/system/index.js +7 -2
  76. package/dist/system/index.js.map +1 -1
  77. package/dist/vite/index.d.ts +1 -1
  78. package/dist/vite/index.js +15 -7
  79. package/dist/vite/index.js.map +1 -1
  80. package/package.json +4 -2
  81. package/src/api/logs/TODO.md +13 -10
  82. package/src/cli/apps/AlephaPackageBuilderCli.ts +9 -0
  83. package/src/cli/atoms/buildOptions.ts +99 -9
  84. package/src/cli/commands/build.ts +149 -32
  85. package/src/cli/commands/db.ts +5 -7
  86. package/src/cli/commands/init.spec.ts +50 -6
  87. package/src/cli/commands/init.ts +28 -5
  88. package/src/cli/providers/ViteDevServerProvider.ts +1 -10
  89. package/src/cli/services/AlephaCliUtils.ts +16 -0
  90. package/src/cli/services/PackageManagerUtils.ts +2 -0
  91. package/src/cli/services/ProjectScaffolder.spec.ts +97 -0
  92. package/src/cli/services/ProjectScaffolder.ts +28 -6
  93. package/src/cli/templates/agentMd.ts +6 -1
  94. package/src/cli/templates/apiAppSecurityTs.ts +11 -0
  95. package/src/cli/templates/apiIndexTs.ts +18 -4
  96. package/src/cli/templates/webAppRouterTs.ts +25 -1
  97. package/src/cli/templates/webHelloComponentTsx.ts +15 -5
  98. package/src/command/helpers/Runner.spec.ts +135 -0
  99. package/src/command/helpers/Runner.ts +4 -1
  100. package/src/command/providers/CliProvider.spec.ts +325 -0
  101. package/src/command/providers/CliProvider.ts +117 -7
  102. package/src/core/Alepha.ts +32 -25
  103. package/src/orm/index.bun.ts +1 -1
  104. package/src/orm/index.ts +2 -6
  105. package/src/orm/providers/drivers/BunSqliteProvider.ts +4 -1
  106. package/src/orm/providers/drivers/CloudflareD1Provider.ts +57 -30
  107. package/src/orm/providers/drivers/DatabaseProvider.ts +9 -1
  108. package/src/orm/providers/drivers/NodeSqliteProvider.ts +4 -1
  109. package/src/react/router/hooks/useActive.ts +1 -1
  110. package/src/react/router/hooks/useRouter.ts +1 -1
  111. package/src/react/router/index.ts +4 -0
  112. package/src/react/router/primitives/$page.browser.spec.tsx +24 -24
  113. package/src/react/router/primitives/$page.spec.tsx +0 -32
  114. package/src/react/router/primitives/$page.ts +6 -14
  115. package/src/react/router/providers/ReactBrowserProvider.ts +6 -3
  116. package/src/react/router/providers/ReactPageProvider.ts +1 -1
  117. package/src/react/router/providers/ReactPreloadProvider.spec.ts +142 -0
  118. package/src/react/router/providers/ReactPreloadProvider.ts +85 -0
  119. package/src/react/router/providers/ReactServerProvider.ts +7 -78
  120. package/src/react/router/providers/ReactServerTemplateProvider.spec.ts +210 -0
  121. package/src/react/router/providers/ReactServerTemplateProvider.ts +228 -665
  122. package/src/react/router/services/ReactRouter.ts +13 -13
  123. package/src/security/__tests__/ServerSecurityProvider.spec.ts +77 -0
  124. package/src/security/providers/ServerSecurityProvider.ts +30 -22
  125. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +9 -3
  126. package/src/system/index.browser.ts +25 -0
  127. package/src/system/index.workerd.ts +1 -0
  128. package/src/system/providers/FileSystemProvider.ts +8 -0
  129. package/src/system/providers/NodeFileSystemProvider.ts +11 -2
  130. package/src/vite/tasks/buildServer.ts +2 -12
  131. package/src/vite/tasks/generateCloudflare.ts +10 -7
  132. 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
- src="https://raw.githubusercontent.com/feunard/alepha/main/apps/docs/public/icon-512.png"
5
- width="128"
6
- height="128"
7
- alt="Logo"
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 style="max-width: 512px">
13
- Easy mode for building TypeScript applications.
14
- </p>
15
- <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/v/alepha.svg" alt="npm"/></a>
16
- <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/l/alepha.svg" alt="npm"/></a>
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
- A full-stack TypeScript framework for building APIs, React apps with SSR, CLI tools, and more.
21
+ Full-stack TypeScript framework. Node.js and Bun, same code.
25
22
 
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
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
- Check out the [documentation](https://alepha.dev) for the full picture.
29
+ ## Example
32
30
 
33
- ## Quick Start
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 { $swagger } from "alepha/server/swagger";
50
-
51
- export class HelloController {
52
- docs = $swagger();
53
-
54
- hello = $action({
55
- path: "/hello",
56
- schema: {
57
- query: t.object({
58
- name: t.optional(t.text()),
59
- }),
60
- response: t.object({
61
- message: t.text(),
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
- ```bash
72
- npm run dev
73
- # Open http://localhost:3000/docs/ for auto-generated API docs
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
- Build and run in production:
64
+ export class AppRouter {
65
+ api = $client<Api>(); // ← fully typed, zero codegen
77
66
 
78
- ```bash
79
- npm run build
80
- node dist # or: bun dist
67
+ home = $page({
68
+ loader: () => this.api.inc(),
69
+ component: (props) => <div>Counter: {props.count}</div>,
70
+ });
71
+ }
81
72
  ```
82
73
 
83
- ### Full-Stack React
74
+ ## Getting Started
84
75
 
85
- In same directory, re-initialize with React support:
76
+ Requirements: [Node.js](https://nodejs.org/) 22+ or [Bun](https://bun.sh/) 1.3+
86
77
 
87
78
  ```bash
88
- npx alepha init --react
89
- ```
90
-
91
- Your `src/main.server.ts` wires everything together:
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(alepha);
84
+ cd my-app && npm run dev
104
85
  ```
105
86
 
106
- Start development server:
87
+ ## CLI
107
88
 
108
89
  ```bash
109
- npm run dev
110
- # Open http://localhost:3000/
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) — guides, concepts, API reference
116
- - [GitHub](https://github.com/feunard/alepha) — source code and issues
102
+ - [Documentation](https://alepha.dev)
103
+ - [llms.txt](https://alepha.dev/llms.txt) — for AI assistants
104
+ - [GitHub](https://github.com/feunard/alepha)