alepha 0.13.6 → 0.13.7

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 (134) hide show
  1. package/dist/api-audits/index.browser.js +116 -0
  2. package/dist/api-audits/index.browser.js.map +1 -0
  3. package/dist/api-audits/index.d.ts +1194 -0
  4. package/dist/api-audits/index.js +674 -0
  5. package/dist/api-audits/index.js.map +1 -0
  6. package/dist/api-notifications/index.d.ts +147 -147
  7. package/dist/api-parameters/index.browser.js +36 -5
  8. package/dist/api-parameters/index.browser.js.map +1 -1
  9. package/dist/api-parameters/index.d.ts +711 -33
  10. package/dist/api-parameters/index.js +831 -17
  11. package/dist/api-parameters/index.js.map +1 -1
  12. package/dist/api-users/index.d.ts +793 -780
  13. package/dist/api-users/index.js +699 -19
  14. package/dist/api-users/index.js.map +1 -1
  15. package/dist/api-verifications/index.js +2 -1
  16. package/dist/api-verifications/index.js.map +1 -1
  17. package/dist/bin/index.js +1 -0
  18. package/dist/bin/index.js.map +1 -1
  19. package/dist/cli/index.d.ts +85 -31
  20. package/dist/cli/index.js +205 -33
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/command/index.d.ts +67 -6
  23. package/dist/command/index.js +30 -3
  24. package/dist/command/index.js.map +1 -1
  25. package/dist/core/index.browser.js +241 -61
  26. package/dist/core/index.browser.js.map +1 -1
  27. package/dist/core/index.d.ts +170 -90
  28. package/dist/core/index.js +264 -67
  29. package/dist/core/index.js.map +1 -1
  30. package/dist/core/index.native.js +248 -65
  31. package/dist/core/index.native.js.map +1 -1
  32. package/dist/email/index.js +15 -10554
  33. package/dist/email/index.js.map +1 -1
  34. package/dist/logger/index.d.ts +4 -4
  35. package/dist/logger/index.js +77 -72
  36. package/dist/logger/index.js.map +1 -1
  37. package/dist/orm/index.d.ts +5 -1
  38. package/dist/orm/index.js +24 -7
  39. package/dist/orm/index.js.map +1 -1
  40. package/dist/queue/index.d.ts +4 -4
  41. package/dist/scheduler/index.d.ts +6 -6
  42. package/dist/server/index.d.ts +10 -1
  43. package/dist/server/index.js +20 -6
  44. package/dist/server/index.js.map +1 -1
  45. package/dist/server-auth/index.d.ts +163 -152
  46. package/dist/server-auth/index.js +40 -10
  47. package/dist/server-auth/index.js.map +1 -1
  48. package/dist/server-cookies/index.js +5 -1
  49. package/dist/server-cookies/index.js.map +1 -1
  50. package/dist/server-links/index.d.ts +33 -33
  51. package/dist/server-security/index.d.ts +9 -9
  52. package/dist/thread/index.js +2 -2
  53. package/dist/thread/index.js.map +1 -1
  54. package/dist/vite/index.d.ts +2 -2
  55. package/dist/vite/index.js +102 -45
  56. package/dist/vite/index.js.map +1 -1
  57. package/dist/websocket/index.browser.js +3 -3
  58. package/dist/websocket/index.browser.js.map +1 -1
  59. package/dist/websocket/index.js +4 -4
  60. package/dist/websocket/index.js.map +1 -1
  61. package/package.json +14 -9
  62. package/src/api-audits/controllers/AuditController.ts +186 -0
  63. package/src/api-audits/entities/audits.ts +132 -0
  64. package/src/api-audits/index.browser.ts +18 -0
  65. package/src/api-audits/index.ts +58 -0
  66. package/src/api-audits/primitives/$audit.ts +159 -0
  67. package/src/api-audits/schemas/auditQuerySchema.ts +23 -0
  68. package/src/api-audits/schemas/auditResourceSchema.ts +9 -0
  69. package/src/api-audits/schemas/createAuditSchema.ts +27 -0
  70. package/src/api-audits/services/AuditService.ts +412 -0
  71. package/src/api-parameters/controllers/ConfigController.ts +324 -0
  72. package/src/api-parameters/entities/parameters.ts +93 -10
  73. package/src/api-parameters/index.ts +43 -4
  74. package/src/api-parameters/primitives/$config.ts +291 -19
  75. package/src/api-parameters/schedulers/ConfigActivationScheduler.ts +30 -0
  76. package/src/api-parameters/services/ConfigStore.ts +491 -0
  77. package/src/api-users/atoms/realmAuthSettingsAtom.ts +19 -0
  78. package/src/api-users/controllers/UserRealmController.ts +0 -2
  79. package/src/api-users/index.ts +2 -0
  80. package/src/api-users/primitives/$userRealm.ts +18 -3
  81. package/src/api-users/providers/UserRealmProvider.ts +6 -3
  82. package/src/api-users/services/RegistrationService.ts +2 -1
  83. package/src/api-users/services/SessionService.ts +4 -0
  84. package/src/api-users/services/UserService.ts +3 -0
  85. package/src/api-verifications/index.ts +7 -1
  86. package/src/bin/index.ts +1 -0
  87. package/src/cli/assets/biomeJson.ts +1 -1
  88. package/src/cli/assets/dummySpecTs.ts +7 -0
  89. package/src/cli/assets/editorconfig.ts +13 -0
  90. package/src/cli/assets/mainTs.ts +14 -0
  91. package/src/cli/commands/BiomeCommands.ts +2 -0
  92. package/src/cli/commands/CoreCommands.ts +28 -9
  93. package/src/cli/commands/VerifyCommands.ts +2 -1
  94. package/src/cli/commands/ViteCommands.ts +8 -9
  95. package/src/cli/services/AlephaCliUtils.ts +214 -23
  96. package/src/command/helpers/Asker.ts +0 -1
  97. package/src/command/primitives/$command.ts +67 -0
  98. package/src/command/providers/CliProvider.ts +39 -8
  99. package/src/core/Alepha.ts +40 -30
  100. package/src/core/helpers/jsonSchemaToTypeBox.ts +307 -0
  101. package/src/core/index.shared.ts +1 -0
  102. package/src/core/index.ts +30 -3
  103. package/src/core/providers/EventManager.ts +1 -1
  104. package/src/core/providers/StateManager.ts +23 -12
  105. package/src/core/providers/TypeProvider.ts +26 -34
  106. package/src/logger/index.ts +8 -6
  107. package/src/logger/primitives/$logger.ts +1 -1
  108. package/src/logger/providers/{SimpleFormatterProvider.ts → PrettyFormatterProvider.ts} +10 -1
  109. package/src/orm/index.ts +6 -0
  110. package/src/orm/services/PgRelationManager.ts +2 -2
  111. package/src/orm/services/PostgresModelBuilder.ts +11 -7
  112. package/src/orm/services/Repository.ts +16 -7
  113. package/src/orm/services/SqliteModelBuilder.ts +10 -0
  114. package/src/server/index.ts +6 -0
  115. package/src/server/primitives/$action.ts +10 -1
  116. package/src/server/providers/ServerBodyParserProvider.ts +11 -5
  117. package/src/server/providers/ServerRouterProvider.ts +13 -7
  118. package/src/server-auth/primitives/$auth.ts +7 -0
  119. package/src/server-auth/providers/ServerAuthProvider.ts +51 -8
  120. package/src/server-cookies/index.ts +2 -1
  121. package/src/thread/primitives/$thread.ts +2 -2
  122. package/src/vite/index.ts +0 -2
  123. package/src/vite/tasks/buildServer.ts +3 -4
  124. package/src/vite/tasks/generateCloudflare.ts +35 -19
  125. package/src/vite/tasks/generateDocker.ts +18 -4
  126. package/src/vite/tasks/generateSitemap.ts +5 -7
  127. package/src/vite/tasks/generateVercel.ts +76 -41
  128. package/src/vite/tasks/runAlepha.ts +16 -1
  129. package/src/websocket/providers/NodeWebSocketServerProvider.ts +3 -11
  130. package/src/websocket/services/WebSocketClient.ts +3 -3
  131. package/dist/cli/dist-BlfFtOk2.js +0 -2770
  132. package/dist/cli/dist-BlfFtOk2.js.map +0 -1
  133. package/src/api-parameters/controllers/ParameterController.ts +0 -45
  134. package/src/api-parameters/services/ParameterStore.ts +0 -23
@@ -1,6 +1,6 @@
1
1
  import * as alepha1 from "alepha";
2
2
  import { Alepha, KIND, Primitive, Service, Static, TSchema } from "alepha";
3
- import * as alepha_logger1 from "alepha/logger";
3
+ import * as alepha_logger0 from "alepha/logger";
4
4
  import { DateTimeProvider } from "alepha/datetime";
5
5
 
6
6
  //#region ../../src/queue/interfaces/QueueJob.d.ts
@@ -600,7 +600,7 @@ interface JobWaiter {
600
600
  * - Scenarios where job persistence across restarts is not required
601
601
  */
602
602
  declare class MemoryQueueProvider extends QueueProvider {
603
- protected readonly log: alepha_logger1.Logger;
603
+ protected readonly log: alepha_logger0.Logger;
604
604
  protected messageQueues: Record<string, string[]>;
605
605
  protected messageWaiters: Set<MessageWaiter>;
606
606
  protected jobs: Map<string, Map<string, QueueJob>>;
@@ -947,7 +947,7 @@ interface QueuePrimitiveOptions<T extends TSchema> {
947
947
  removeOnFail?: boolean | number;
948
948
  }
949
949
  declare class QueuePrimitive<T extends TSchema> extends Primitive<QueuePrimitiveOptions<T>> {
950
- protected readonly log: alepha_logger1.Logger;
950
+ protected readonly log: alepha_logger0.Logger;
951
951
  readonly provider: QueueProvider | MemoryQueueProvider;
952
952
  /**
953
953
  * Push one or more payloads to the queue for background processing.
@@ -1180,7 +1180,7 @@ declare module "alepha" {
1180
1180
  interface Env extends Partial<Static<typeof envSchema>> {}
1181
1181
  }
1182
1182
  declare class WorkerProvider {
1183
- protected readonly log: alepha_logger1.Logger;
1183
+ protected readonly log: alepha_logger0.Logger;
1184
1184
  protected readonly env: {
1185
1185
  QUEUE_WORKER_BLOCKING_TIMEOUT: number;
1186
1186
  QUEUE_WORKER_CONCURRENCY: number;
@@ -1,4 +1,4 @@
1
- import * as alepha4 from "alepha";
1
+ import * as alepha1 from "alepha";
2
2
  import { Alepha, Async, KIND, Primitive, Static } from "alepha";
3
3
  import * as alepha_lock0 from "alepha/lock";
4
4
  import { DateTime, DateTimeProvider, DurationLike } from "alepha/datetime";
@@ -23,8 +23,8 @@ declare class CronProvider {
23
23
  protected readonly log: alepha_logger0.Logger;
24
24
  protected readonly cronJobs: Array<CronJob>;
25
25
  getCronJobs(): Array<CronJob>;
26
- protected readonly start: alepha4.HookPrimitive<"start">;
27
- protected readonly stop: alepha4.HookPrimitive<"stop">;
26
+ protected readonly start: alepha1.HookPrimitive<"start">;
27
+ protected readonly stop: alepha1.HookPrimitive<"stop">;
28
28
  protected boot(name: string | CronJob): void;
29
29
  abort(name: string | CronJob): void;
30
30
  /**
@@ -87,8 +87,8 @@ type SchedulerPrimitiveOptions = {
87
87
  */
88
88
  lock?: boolean;
89
89
  };
90
- declare const envSchema: alepha4.TObject<{
91
- SCHEDULER_PREFIX: alepha4.TOptional<alepha4.TString>;
90
+ declare const envSchema: alepha1.TObject<{
91
+ SCHEDULER_PREFIX: alepha1.TOptional<alepha1.TString>;
92
92
  }>;
93
93
  declare module "alepha" {
94
94
  interface Env extends Partial<Static<typeof envSchema>> {}
@@ -139,7 +139,7 @@ declare module "alepha" {
139
139
  * @see {@link $scheduler}
140
140
  * @module alepha.scheduler
141
141
  */
142
- declare const AlephaScheduler: alepha4.Service<alepha4.Module>;
142
+ declare const AlephaScheduler: alepha1.Service<alepha1.Module>;
143
143
  //#endregion
144
144
  export { $scheduler, AlephaScheduler, CRON, CronJob, CronProvider, SchedulerHandlerArguments, SchedulerPrimitive, SchedulerPrimitiveOptions };
145
145
  //# sourceMappingURL=index.d.ts.map
@@ -406,7 +406,16 @@ interface HttpAction {
406
406
  * - Automatic content-type handling (JSON, form-data, plain text)
407
407
  *
408
408
  * **URL Generation**
409
- * Actions are prefixed with `/api` by default (configurable via `SERVER_API_PREFIX`).
409
+ *
410
+ * **Important:** All `$action` paths are automatically prefixed with `/api`.
411
+ *
412
+ * ```ts
413
+ * $action({ path: "/users" }) // → GET /api/users
414
+ * $action({ path: "/users/:id" }) // → GET /api/users/:id
415
+ * $action({ path: "/hello" }) // → GET /api/hello
416
+ * ```
417
+ *
418
+ * This prefix is configurable via the `SERVER_API_PREFIX` environment variable.
410
419
  * HTTP method defaults to GET, or POST if body schema is provided.
411
420
  *
412
421
  * **Common Use Cases**
@@ -510,7 +510,9 @@ var ServerRouterProvider = class extends RouterProvider {
510
510
  } catch (error) {
511
511
  throw new ValidationError("Invalid request header", error);
512
512
  }
513
- if (route.schema?.body) try {
513
+ if (route.schema?.body) if (t.schema.isString(route.schema.body)) {
514
+ if (typeof request.body !== "string") throw new ValidationError("Request body is not a string");
515
+ } else try {
514
516
  request.body = this.alepha.codec.decode(route.schema.body, request.body);
515
517
  } catch (error) {
516
518
  throw new ValidationError("Invalid request body", error);
@@ -957,7 +959,16 @@ var HttpClient = class {
957
959
  * - Automatic content-type handling (JSON, form-data, plain text)
958
960
  *
959
961
  * **URL Generation**
960
- * Actions are prefixed with `/api` by default (configurable via `SERVER_API_PREFIX`).
962
+ *
963
+ * **Important:** All `$action` paths are automatically prefixed with `/api`.
964
+ *
965
+ * ```ts
966
+ * $action({ path: "/users" }) // → GET /api/users
967
+ * $action({ path: "/users/:id" }) // → GET /api/users/:id
968
+ * $action({ path: "/hello" }) // → GET /api/hello
969
+ * ```
970
+ *
971
+ * This prefix is configurable via the `SERVER_API_PREFIX` environment variable.
961
972
  * HTTP method defaults to GET, or POST if body schema is provided.
962
973
  *
963
974
  * **Common Use Cases**
@@ -1363,7 +1374,7 @@ var ServerBodyParserProvider = class {
1363
1374
  else if (request.raw.node?.req) stream = ReadableStream$1.from(request.raw.node.req);
1364
1375
  if (!stream) return;
1365
1376
  if (route.schema?.body) try {
1366
- const body = await this.parse(stream, request.headers);
1377
+ const body = await this.parse(stream, request.headers, route.schema.body);
1367
1378
  if (body) request.body = body;
1368
1379
  } catch (error) {
1369
1380
  if (error instanceof HttpError) throw error;
@@ -1374,12 +1385,12 @@ var ServerBodyParserProvider = class {
1374
1385
  }
1375
1386
  }
1376
1387
  });
1377
- async parse(stream, headers) {
1388
+ async parse(stream, headers, schema) {
1378
1389
  const contentType = headers["content-type"];
1379
1390
  const contentEncoding = headers["content-encoding"];
1380
1391
  if (!contentType) return void 0;
1392
+ if (contentType.startsWith("text/plain") || t.schema.isString(schema)) return this.parseText(stream, contentEncoding);
1381
1393
  if (contentType.startsWith("application/json")) return this.parseJson(stream, contentEncoding);
1382
- if (contentType.startsWith("text/plain")) return this.parseText(stream, contentEncoding);
1383
1394
  if (contentType.startsWith("application/x-www-form-urlencoded")) return this.parseUrlEncoded(stream, contentEncoding);
1384
1395
  }
1385
1396
  async parseText(stream, contentEncoding) {
@@ -1628,7 +1639,10 @@ const AlephaServer = $module({
1628
1639
  ServerLoggerProvider,
1629
1640
  ServerNotReadyProvider,
1630
1641
  ServerTimingProvider,
1631
- HttpClient
1642
+ HttpClient,
1643
+ UserAgentParser,
1644
+ ServerRequestParser,
1645
+ ServerRouterProvider
1632
1646
  ],
1633
1647
  register: (alepha) => {
1634
1648
  if (!alepha.isServerless() && !alepha.isViteDev()) if (alepha.isBun()) alepha.with({