alepha 0.20.8 → 0.21.0

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 (229) hide show
  1. package/README.md +30 -19
  2. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/files/index.browser.js +25 -0
  5. package/dist/api/files/index.browser.js.map +1 -1
  6. package/dist/api/files/index.d.ts +72 -2
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +82 -7
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +19 -17
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/jobs/index.js +4 -2
  13. package/dist/api/jobs/index.js.map +1 -1
  14. package/dist/api/keys/index.d.ts +3 -0
  15. package/dist/api/keys/index.d.ts.map +1 -1
  16. package/dist/api/keys/index.js +2 -0
  17. package/dist/api/keys/index.js.map +1 -1
  18. package/dist/api/oauth/index.d.ts +287 -0
  19. package/dist/api/oauth/index.d.ts.map +1 -0
  20. package/dist/api/oauth/index.js +578 -0
  21. package/dist/api/oauth/index.js.map +1 -0
  22. package/dist/api/organizations/index.d.ts.map +1 -1
  23. package/dist/api/parameters/index.d.ts +2 -2
  24. package/dist/api/parameters/index.d.ts.map +1 -1
  25. package/dist/api/parameters/index.js +2 -2
  26. package/dist/api/parameters/index.js.map +1 -1
  27. package/dist/api/payments/index.d.ts +2 -0
  28. package/dist/api/payments/index.d.ts.map +1 -1
  29. package/dist/api/payments/index.js +5 -4
  30. package/dist/api/payments/index.js.map +1 -1
  31. package/dist/api/subscriptions/index.d.ts.map +1 -1
  32. package/dist/api/users/index.browser.js +8 -0
  33. package/dist/api/users/index.browser.js.map +1 -1
  34. package/dist/api/users/index.d.ts +241 -4994
  35. package/dist/api/users/index.d.ts.map +1 -1
  36. package/dist/api/users/index.js +59 -8
  37. package/dist/api/users/index.js.map +1 -1
  38. package/dist/api/verifications/index.d.ts +15 -13
  39. package/dist/api/verifications/index.d.ts.map +1 -1
  40. package/dist/api/verifications/index.js +4 -2
  41. package/dist/api/verifications/index.js.map +1 -1
  42. package/dist/batch/index.d.ts +2 -0
  43. package/dist/batch/index.d.ts.map +1 -1
  44. package/dist/batch/index.js +3 -1
  45. package/dist/batch/index.js.map +1 -1
  46. package/dist/bucket/index.d.ts +5 -0
  47. package/dist/bucket/index.d.ts.map +1 -1
  48. package/dist/bucket/index.js +9 -5
  49. package/dist/bucket/index.js.map +1 -1
  50. package/dist/bucket/index.workerd.js +5 -3
  51. package/dist/bucket/index.workerd.js.map +1 -1
  52. package/dist/cli/core/index.d.ts +160 -21
  53. package/dist/cli/core/index.d.ts.map +1 -1
  54. package/dist/cli/core/index.js +309 -44
  55. package/dist/cli/core/index.js.map +1 -1
  56. package/dist/cli/devtools/index.d.ts.map +1 -1
  57. package/dist/cli/devtools/index.js +10 -6
  58. package/dist/cli/devtools/index.js.map +1 -1
  59. package/dist/cli/i18n/index.d.ts +136 -0
  60. package/dist/cli/i18n/index.d.ts.map +1 -0
  61. package/dist/cli/i18n/index.js +245 -0
  62. package/dist/cli/i18n/index.js.map +1 -0
  63. package/dist/cli/platform/index.d.ts +39 -1
  64. package/dist/cli/platform/index.d.ts.map +1 -1
  65. package/dist/cli/platform/index.js +123 -5
  66. package/dist/cli/platform/index.js.map +1 -1
  67. package/dist/cli/vendor/index.d.ts +34 -9
  68. package/dist/cli/vendor/index.d.ts.map +1 -1
  69. package/dist/cli/vendor/index.js +55 -28
  70. package/dist/cli/vendor/index.js.map +1 -1
  71. package/dist/core/index.d.ts +0 -5
  72. package/dist/core/index.d.ts.map +1 -1
  73. package/dist/core/index.js +0 -22
  74. package/dist/core/index.js.map +1 -1
  75. package/dist/crypto/index.browser.js +73 -0
  76. package/dist/crypto/index.browser.js.map +1 -1
  77. package/dist/crypto/index.d.ts +10 -0
  78. package/dist/crypto/index.d.ts.map +1 -1
  79. package/dist/crypto/index.js +60 -0
  80. package/dist/crypto/index.js.map +1 -1
  81. package/dist/mcp/index.d.ts +40 -0
  82. package/dist/mcp/index.d.ts.map +1 -1
  83. package/dist/mcp/index.js +33 -2
  84. package/dist/mcp/index.js.map +1 -1
  85. package/dist/orm/core/index.bun.js +1254 -1070
  86. package/dist/orm/core/index.bun.js.map +1 -1
  87. package/dist/orm/core/index.d.ts +1494 -6228
  88. package/dist/orm/core/index.d.ts.map +1 -1
  89. package/dist/orm/core/index.js +2174 -2011
  90. package/dist/orm/core/index.js.map +1 -1
  91. package/dist/orm/postgres/index.bun.js +13 -20
  92. package/dist/orm/postgres/index.bun.js.map +1 -1
  93. package/dist/react/form/index.d.ts +0 -28
  94. package/dist/react/form/index.d.ts.map +1 -1
  95. package/dist/react/form/index.js +18 -4
  96. package/dist/react/form/index.js.map +1 -1
  97. package/dist/react/head/index.browser.js +3 -0
  98. package/dist/react/head/index.browser.js.map +1 -1
  99. package/dist/react/head/index.d.ts +13 -0
  100. package/dist/react/head/index.d.ts.map +1 -1
  101. package/dist/react/head/index.js +3 -0
  102. package/dist/react/head/index.js.map +1 -1
  103. package/dist/react/router/index.d.ts.map +1 -1
  104. package/dist/react/router/index.js +3 -0
  105. package/dist/react/router/index.js.map +1 -1
  106. package/dist/react/testing/index.js +3 -3
  107. package/dist/react/testing/index.js.map +1 -1
  108. package/dist/redis/index.bun.js +2 -6
  109. package/dist/redis/index.bun.js.map +1 -1
  110. package/dist/security/index.d.ts +14 -1
  111. package/dist/security/index.d.ts.map +1 -1
  112. package/dist/security/index.js +11 -7
  113. package/dist/security/index.js.map +1 -1
  114. package/dist/server/core/index.d.ts +2 -1
  115. package/dist/server/core/index.d.ts.map +1 -1
  116. package/dist/server/core/index.js +3 -3
  117. package/dist/server/core/index.js.map +1 -1
  118. package/dist/server/links/index.browser.js +18 -2
  119. package/dist/server/links/index.browser.js.map +1 -1
  120. package/dist/server/links/index.d.ts +1 -0
  121. package/dist/server/links/index.d.ts.map +1 -1
  122. package/dist/server/links/index.js +18 -2
  123. package/dist/server/links/index.js.map +1 -1
  124. package/dist/system/index.d.ts +159 -128
  125. package/dist/system/index.d.ts.map +1 -1
  126. package/dist/system/index.js +249 -181
  127. package/dist/system/index.js.map +1 -1
  128. package/package.json +36 -15
  129. package/src/api/files/__tests__/FileAccessProvider.spec.ts +87 -0
  130. package/src/api/files/__tests__/FileController.spec.ts +4 -0
  131. package/src/api/files/controllers/FileController.ts +14 -4
  132. package/src/api/files/entities/files.ts +25 -0
  133. package/src/api/files/index.ts +9 -1
  134. package/src/api/files/providers/FileAccessProvider.ts +52 -0
  135. package/src/api/files/services/FileService.ts +2 -0
  136. package/src/api/jobs/providers/JobProvider.ts +4 -2
  137. package/src/api/keys/controllers/ApiKeyController.ts +1 -0
  138. package/src/api/keys/schemas/listApiKeyResponseSchema.ts +1 -0
  139. package/src/api/oauth/__tests__/OAuthClientService.spec.ts +123 -0
  140. package/src/api/oauth/__tests__/OAuthController.spec.ts +233 -0
  141. package/src/api/oauth/controllers/OAuthController.ts +275 -0
  142. package/src/api/oauth/entities/oauthClientEntity.ts +31 -0
  143. package/src/api/oauth/helpers/consentPage.ts +65 -0
  144. package/src/api/oauth/helpers/oauthMetadata.ts +29 -0
  145. package/src/api/oauth/index.ts +38 -0
  146. package/src/api/oauth/schemas/authorizeDecisionBodySchema.ts +18 -0
  147. package/src/api/oauth/schemas/authorizeQuerySchema.ts +15 -0
  148. package/src/api/oauth/schemas/registerClientBodySchema.ts +16 -0
  149. package/src/api/oauth/schemas/tokenRequestBodySchema.ts +16 -0
  150. package/src/api/oauth/services/OAuthClientService.ts +267 -0
  151. package/src/api/parameters/services/ParameterProvider.ts +2 -2
  152. package/src/api/payments/providers/MemoryPaymentProvider.ts +6 -4
  153. package/src/api/users/__tests__/ApiKeys.spec.ts +30 -0
  154. package/src/api/users/__tests__/realmOauth.spec.ts +52 -0
  155. package/src/api/users/atoms/realmAuthSettingsAtom.ts +7 -0
  156. package/src/api/users/entities/sessions.ts +8 -0
  157. package/src/api/users/primitives/$realm.ts +83 -2
  158. package/src/api/users/services/CredentialService.ts +1 -2
  159. package/src/api/users/services/RegistrationService.ts +8 -7
  160. package/src/api/users/services/SessionService.ts +2 -0
  161. package/src/api/verifications/services/VerificationService.ts +4 -2
  162. package/src/batch/providers/BatchProvider.ts +3 -1
  163. package/src/bucket/providers/CloudflareR2Provider.ts +3 -1
  164. package/src/bucket/providers/LocalFileStorageProvider.ts +3 -2
  165. package/src/bucket/providers/MemoryFileStorageProvider.ts +3 -2
  166. package/src/bucket/providers/NodeS3BucketProvider.ts +3 -1
  167. package/src/cli/core/__tests__/BuildDockerTask.spec.ts +306 -0
  168. package/src/cli/core/__tests__/init.spec.ts +28 -9
  169. package/src/cli/core/atoms/buildOptions.ts +45 -0
  170. package/src/cli/core/commands/build.ts +27 -0
  171. package/src/cli/core/commands/db.ts +4 -1
  172. package/src/cli/core/commands/init.ts +0 -3
  173. package/src/cli/core/commands/lint.ts +4 -8
  174. package/src/cli/core/commands/test.ts +21 -10
  175. package/src/cli/core/commands/typecheck.ts +4 -10
  176. package/src/cli/core/commands/verify.ts +4 -3
  177. package/src/cli/core/services/AlephaCliUtils.ts +57 -1
  178. package/src/cli/core/services/PackageManagerUtils.ts +8 -24
  179. package/src/cli/core/services/ProjectScaffolder.ts +41 -5
  180. package/src/cli/core/tasks/BuildDockerTask.ts +191 -14
  181. package/src/cli/core/templates/agentMd.ts +7 -0
  182. package/src/cli/core/templates/alephaConfigTs.ts +14 -0
  183. package/src/cli/core/templates/dummySpecTs.ts +15 -3
  184. package/src/cli/core/templates/vscodeSettingsJson.ts +21 -0
  185. package/src/cli/devtools/index.ts +10 -6
  186. package/src/cli/i18n/__tests__/I18nCheckService.spec.ts +128 -0
  187. package/src/cli/i18n/atoms/i18nOptions.ts +51 -0
  188. package/src/cli/i18n/commands/I18nCommand.ts +81 -0
  189. package/src/cli/i18n/index.ts +52 -0
  190. package/src/cli/i18n/services/I18nCheckService.ts +144 -0
  191. package/src/cli/platform/adapters/CloudflareAdapter.ts +123 -31
  192. package/src/cli/platform/commands/SecretsCommand.ts +8 -4
  193. package/src/cli/platform/schemas/cloudflare.ts +24 -0
  194. package/src/cli/platform/services/CloudflareApi.ts +44 -0
  195. package/src/cli/vendor/__tests__/VendorService.spec.ts +32 -14
  196. package/src/cli/vendor/atoms/vendorOptions.ts +11 -1
  197. package/src/cli/vendor/commands/VendorCommand.ts +15 -3
  198. package/src/cli/vendor/services/VendorService.ts +55 -19
  199. package/src/core/index.ts +0 -32
  200. package/src/core/interfaces/Run.ts +0 -5
  201. package/src/crypto/__tests__/BrowserCryptoProvider.browser.spec.ts +58 -0
  202. package/src/crypto/providers/BrowserCryptoProvider.ts +115 -0
  203. package/src/crypto/providers/CryptoProvider.ts +99 -0
  204. package/src/mcp/__tests__/StreamableHttpMcpTransport.spec.ts +117 -0
  205. package/src/mcp/transports/StreamableHttpMcpTransport.ts +48 -0
  206. package/src/orm/__tests__/$sequence.spec.ts +87 -2
  207. package/src/orm/core/entities/alephaSequences.ts +42 -0
  208. package/src/orm/core/index.bun.ts +21 -20
  209. package/src/orm/core/index.shared-server.ts +2 -0
  210. package/src/orm/core/index.ts +2 -0
  211. package/src/orm/core/primitives/$sequence.ts +68 -27
  212. package/src/orm/core/providers/SequenceProvider.ts +103 -0
  213. package/src/orm/core/providers/drivers/CloudflareD1Provider.ts +7 -2
  214. package/src/orm/core/services/Repository.ts +22 -1
  215. package/src/orm/postgres/index.bun.ts +5 -12
  216. package/src/react/form/__tests__/useForm.browser.spec.tsx +434 -0
  217. package/src/react/form/hooks/useForm.ts +32 -5
  218. package/src/react/head/interfaces/Head.ts +13 -0
  219. package/src/react/head/providers/BrowserHeadProvider.ts +9 -0
  220. package/src/react/router/providers/ReactServerTemplateProvider.ts +4 -0
  221. package/src/redis/index.bun.ts +2 -6
  222. package/src/security/primitives/$issuer.ts +14 -0
  223. package/src/security/providers/ServerSecurityProvider.ts +20 -19
  224. package/src/server/core/__tests__/BunHttpServerProvider.bun.spec.ts +6 -6
  225. package/src/server/core/providers/ServerRouterProvider.ts +5 -2
  226. package/src/server/links/services/BatchCollector.ts +36 -2
  227. package/src/system/__tests__/BunShellProvider.bun.spec.ts +74 -0
  228. package/src/system/index.ts +13 -4
  229. package/src/system/providers/BunShellProvider.ts +81 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  />
10
10
  Alepha
11
11
  </h1>
12
- <p>TypeScript Framework Made Easy</p>
12
+ <p>One full-stack TypeScript framework. No glue.</p>
13
13
  <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/v/alepha.svg" alt="npm version"/></a>
14
14
  <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/l/alepha.svg" alt="license"/></a>
15
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>
@@ -18,26 +18,40 @@ Alepha
18
18
 
19
19
  ## What is Alepha?
20
20
 
21
- Full-stack TypeScript framework for agentic era. Define your schema once — get database, API, types, and forms.
21
+ Alepha is a full-stack TypeScript framework built for the agentic era.
22
+
23
+ Everything between your code and the runtime — HTTP server, routing, auth, queues, storage, jobs, SSR — is rewritten clean and integrated for Node, Bun, and Cloudflare Workers. Two load-bearing layers are deliberately *not* reinvented: **React** for UI and **Drizzle** for SQL. No library glue, no config sprawl: one small, consistent surface of typed primitives.
24
+
25
+ That small surface is the point. AI coding agents (Claude Code, Codex) work best against a narrow, predictable API — so they generate predictable, consistent code you can actually review.
22
26
 
23
27
  - **One schema, everywhere** — Database, API validation, TypeScript types, React forms — all from one definition
24
- - **Full autocomplete** — Client calls server with complete type safety, zero codegen
28
+ - **One surface** — Every feature is a typed `$primitive`. No third-party glue to wire up or keep in sync
25
29
  - **Multi-runtime** — Same code runs on Node, Bun, and Cloudflare Workers
26
30
  - **Deploy anywhere** — Cloudflare, Vercel, Docker, bare metal
27
31
 
28
- Built on predictable conventions and typed primitives — works great with AI coding assistants (BYOA).
32
+ ## Architecture
33
+
34
+ Each layer builds on the previous — use only what you need.
35
+
36
+ | Layer | Description | Primitives |
37
+ |----------------|-------------|---------------------------------------------------------|
38
+ | **Foundation** | DI, lifecycle, config | `$inject`, `$env`, `$module`, `$hook`, `$logger` |
39
+ | **Backend** | Database, queues, storage, API | `$entity`, `$action`, `$queue`, `$bucket`, `$scheduler` |
40
+ | **Frontend** | React with SSR, routing, i18n | `$page`, `$head`, `$atom`, `$dictionary` |
41
+ | **Platform** | Users, auth, jobs, audits | `$realm`, `$job`, `$audit`, `$notification` |
42
+
43
+ ## Built for agents
29
44
 
30
- Each layer builds on the previous.
45
+ Every feature is one typed `$primitive` — no decorators, no file-system magic, no runtime metadata. An agent reading the code sees exactly what it does, in one place.
31
46
 
32
- | Layer | Description | Primitives |
33
- |--------------|-------------|---------------------------------------------------------|
34
- | **Core** | DI, lifecycle, config | `$inject`, `$env`, `$module`, `$hook`, `$logger` |
35
- | **Backend** | Database, queues, storage, API | `$entity`, `$action`, `$queue`, `$bucket`, `$scheduler` |
36
- | **Frontend** | React with SSR, routing, i18n | `$page`, `$head`, `$atom`, `$dictionary` |
37
- | **Modules** | Users, auth, jobs, audits | `$realm`, `$job`, `$audit`, `$notification` |
47
+ For UI, Alepha keeps **React** as the coding interface — agents write standard React components, the most familiar surface in their training data, with no framework-specific dialect to get wrong. For SQL it builds on **Drizzle**, but wraps it completely: you write one typed `$entity` schema and a `$repository`, never Drizzle itself. One is a proven interface agents already know; the other is a proven engine they never have to think about.
48
+
49
+ The smaller and more consistent the surface, the more reliably an agent generates correct code against it. Point your AI assistant at [`alepha.dev/llms.txt`](https://alepha.dev/llms.txt) for the full machine-readable API.
38
50
 
39
51
  ## Example
40
52
 
53
+ Define an API, call it from a React page — typed end-to-end, no codegen, no glue.
54
+
41
55
  ```tsx
42
56
  // src/Api.ts
43
57
  import { t } from "alepha";
@@ -85,19 +99,16 @@ export class AppRouter {
85
99
  }
86
100
  ```
87
101
 
102
+ The `Api` class is the only contract. `$client<Api>()` derives every call site from it — change a handler's return type and the page stops compiling.
103
+
88
104
  ## Getting Started
89
105
 
90
106
  Requirements: [Node.js](https://nodejs.org/) 22+ or [Bun](https://bun.sh/) 1.3+
91
107
 
92
108
  ```bash
93
- # L1: Backend only
94
- npx alepha init my-api --api
95
-
96
- # L2: React frontend (with or without backend)
97
- npx alepha init my-app --react
98
-
99
- # L3: Api, Frontend, Admin UI
100
- npx alepha init my-saas --saas
109
+ npx alepha init my-api --api # REST API
110
+ npx alepha init my-app --react # React app (SSR)
111
+ npx alepha init my-saas --saas # API + React + auth + admin panel
101
112
  ```
102
113
 
103
114
  ## Learn More