alepha 0.13.0 → 0.13.2
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 +1 -1
- package/dist/api-files/index.d.ts +28 -91
- package/dist/api-files/index.js +10 -755
- package/dist/api-files/index.js.map +1 -1
- package/dist/api-jobs/index.d.ts +67 -67
- package/dist/api-jobs/index.js +13 -13
- package/dist/api-jobs/index.js.map +1 -1
- package/dist/api-notifications/index.d.ts +129 -146
- package/dist/api-notifications/index.js +17 -39
- package/dist/api-notifications/index.js.map +1 -1
- package/dist/api-parameters/index.d.ts +21 -22
- package/dist/api-parameters/index.js +22 -22
- package/dist/api-parameters/index.js.map +1 -1
- package/dist/api-users/index.d.ts +224 -2001
- package/dist/api-users/index.js +914 -4787
- package/dist/api-users/index.js.map +1 -1
- package/dist/api-verifications/index.d.ts +96 -96
- package/dist/batch/index.d.ts +13 -13
- package/dist/batch/index.js +8 -8
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +14 -14
- package/dist/bucket/index.js +12 -12
- package/dist/bucket/index.js.map +1 -1
- package/dist/cache/index.d.ts +11 -11
- package/dist/cache/index.js +9 -9
- package/dist/cache/index.js.map +1 -1
- package/dist/cli/{dist-Sz2EXvQX.cjs → dist-Dl9Vl7Ur.js} +17 -13
- package/dist/cli/{dist-BBPjuQ56.js.map → dist-Dl9Vl7Ur.js.map} +1 -1
- package/dist/cli/index.d.ts +31 -37
- package/dist/cli/index.js +152 -83
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +19 -19
- package/dist/command/index.js +25 -25
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +218 -218
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +232 -232
- package/dist/core/index.js +218 -218
- package/dist/core/index.js.map +1 -1
- package/dist/core/{index.cjs → index.native.js} +304 -455
- package/dist/core/index.native.js.map +1 -0
- package/dist/datetime/index.d.ts +9 -9
- package/dist/datetime/index.js +7 -7
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +16 -16
- package/dist/email/index.js +80 -82
- package/dist/email/index.js.map +1 -1
- package/dist/file/index.js +1 -1
- package/dist/file/index.js.map +1 -1
- package/dist/lock/index.d.ts +9 -9
- package/dist/lock/index.js +8 -8
- package/dist/lock/index.js.map +1 -1
- package/dist/lock-redis/index.js +3 -66
- package/dist/lock-redis/index.js.map +1 -1
- package/dist/logger/index.d.ts +5 -5
- package/dist/logger/index.js +8 -8
- package/dist/logger/index.js.map +1 -1
- package/dist/orm/index.browser.js +114 -114
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.d.ts +219 -219
- package/dist/orm/index.js +46 -46
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/index.d.ts +25 -25
- package/dist/queue/index.js +20 -20
- package/dist/queue/index.js.map +1 -1
- package/dist/queue-redis/index.d.ts +2 -2
- package/dist/redis/index.d.ts +10 -10
- package/dist/retry/index.d.ts +20 -20
- package/dist/retry/index.js +9 -9
- package/dist/retry/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +12 -12
- package/dist/scheduler/index.js +9 -9
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +53 -53
- package/dist/security/index.js +32 -32
- package/dist/security/index.js.map +1 -1
- package/dist/server/index.browser.js +1 -1
- package/dist/server/index.browser.js.map +1 -1
- package/dist/server/index.d.ts +101 -101
- package/dist/server/index.js +17 -17
- package/dist/server/index.js.map +1 -1
- package/dist/server-auth/index.browser.js +4 -982
- package/dist/server-auth/index.browser.js.map +1 -1
- package/dist/server-auth/index.d.ts +204 -785
- package/dist/server-auth/index.js +47 -1239
- package/dist/server-auth/index.js.map +1 -1
- package/dist/server-cache/index.d.ts +10 -10
- package/dist/server-cache/index.js +2 -2
- package/dist/server-cache/index.js.map +1 -1
- package/dist/server-compress/index.d.ts +4 -4
- package/dist/server-compress/index.js +1 -1
- package/dist/server-compress/index.js.map +1 -1
- package/dist/server-cookies/index.browser.js +8 -8
- package/dist/server-cookies/index.browser.js.map +1 -1
- package/dist/server-cookies/index.d.ts +17 -17
- package/dist/server-cookies/index.js +10 -10
- package/dist/server-cookies/index.js.map +1 -1
- package/dist/server-cors/index.d.ts +17 -17
- package/dist/server-cors/index.js +9 -9
- package/dist/server-cors/index.js.map +1 -1
- package/dist/server-health/index.d.ts +2 -2
- package/dist/server-helmet/index.d.ts +1 -1
- package/dist/server-links/index.browser.js +12 -12
- package/dist/server-links/index.browser.js.map +1 -1
- package/dist/server-links/index.d.ts +59 -251
- package/dist/server-links/index.js +23 -502
- package/dist/server-links/index.js.map +1 -1
- package/dist/server-metrics/index.d.ts +4 -4
- package/dist/server-metrics/index.js +170 -174
- package/dist/server-metrics/index.js.map +1 -1
- package/dist/server-multipart/index.d.ts +2 -2
- package/dist/server-proxy/index.d.ts +12 -12
- package/dist/server-proxy/index.js +10 -10
- package/dist/server-proxy/index.js.map +1 -1
- package/dist/server-rate-limit/index.d.ts +22 -22
- package/dist/server-rate-limit/index.js +12 -12
- package/dist/server-rate-limit/index.js.map +1 -1
- package/dist/server-security/index.d.ts +24 -24
- package/dist/server-security/index.js +15 -15
- package/dist/server-security/index.js.map +1 -1
- package/dist/server-static/index.d.ts +14 -14
- package/dist/server-static/index.js +8 -8
- package/dist/server-static/index.js.map +1 -1
- package/dist/server-swagger/index.d.ts +25 -184
- package/dist/server-swagger/index.js +21 -724
- package/dist/server-swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +14 -14
- package/dist/sms/index.js +9 -9
- package/dist/sms/index.js.map +1 -1
- package/dist/thread/index.d.ts +11 -11
- package/dist/thread/index.js +17 -17
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/index.d.ts +26 -26
- package/dist/topic/index.js +16 -16
- package/dist/topic/index.js.map +1 -1
- package/dist/topic-redis/index.d.ts +1 -1
- package/dist/vite/index.d.ts +3 -3
- package/dist/vite/index.js +12 -13
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +11 -11
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +51 -51
- package/dist/websocket/index.js +13 -13
- package/dist/websocket/index.js.map +1 -1
- package/package.json +62 -52
- package/src/api-files/services/FileService.ts +5 -7
- package/src/api-jobs/index.ts +1 -1
- package/src/api-jobs/{descriptors → primitives}/$job.ts +8 -8
- package/src/api-jobs/providers/JobProvider.ts +9 -9
- package/src/api-jobs/services/JobService.ts +5 -5
- package/src/api-notifications/index.ts +5 -15
- package/src/api-notifications/{descriptors → primitives}/$notification.ts +10 -10
- package/src/api-notifications/services/NotificationSenderService.ts +3 -3
- package/src/api-parameters/index.ts +1 -1
- package/src/api-parameters/{descriptors → primitives}/$config.ts +7 -12
- package/src/api-users/index.ts +1 -1
- package/src/api-users/{descriptors → primitives}/$userRealm.ts +8 -8
- package/src/api-users/providers/UserRealmProvider.ts +1 -1
- package/src/batch/index.ts +3 -3
- package/src/batch/{descriptors → primitives}/$batch.ts +13 -16
- package/src/bucket/index.ts +8 -8
- package/src/bucket/{descriptors → primitives}/$bucket.ts +8 -8
- package/src/bucket/providers/LocalFileStorageProvider.ts +3 -3
- package/src/cache/index.ts +4 -4
- package/src/cache/{descriptors → primitives}/$cache.ts +15 -15
- package/src/cli/apps/AlephaPackageBuilderCli.ts +30 -3
- package/src/cli/assets/appRouterTs.ts +9 -0
- package/src/cli/assets/indexHtml.ts +2 -1
- package/src/cli/assets/mainBrowserTs.ts +10 -0
- package/src/cli/commands/CoreCommands.ts +6 -5
- package/src/cli/commands/DrizzleCommands.ts +69 -61
- package/src/cli/commands/VerifyCommands.ts +2 -2
- package/src/cli/commands/ViteCommands.ts +6 -1
- package/src/cli/services/ProjectUtils.ts +78 -41
- package/src/command/index.ts +5 -5
- package/src/command/{descriptors → primitives}/$command.ts +9 -12
- package/src/command/providers/CliProvider.ts +10 -10
- package/src/core/Alepha.ts +30 -33
- package/src/core/constants/KIND.ts +1 -1
- package/src/core/constants/OPTIONS.ts +1 -1
- package/src/core/helpers/{descriptor.ts → primitive.ts} +18 -18
- package/src/core/helpers/ref.ts +1 -1
- package/src/core/index.shared.ts +8 -8
- package/src/core/{descriptors → primitives}/$context.ts +5 -5
- package/src/core/{descriptors → primitives}/$hook.ts +4 -4
- package/src/core/{descriptors → primitives}/$inject.ts +2 -2
- package/src/core/{descriptors → primitives}/$module.ts +9 -9
- package/src/core/{descriptors → primitives}/$use.ts +2 -2
- package/src/core/providers/CodecManager.ts +1 -1
- package/src/core/providers/JsonSchemaCodec.ts +1 -1
- package/src/core/providers/StateManager.ts +2 -2
- package/src/datetime/index.ts +3 -3
- package/src/datetime/{descriptors → primitives}/$interval.ts +6 -6
- package/src/email/index.ts +4 -4
- package/src/email/{descriptors → primitives}/$email.ts +8 -8
- package/src/file/index.ts +1 -1
- package/src/lock/index.ts +3 -3
- package/src/lock/{descriptors → primitives}/$lock.ts +10 -10
- package/src/logger/index.ts +8 -8
- package/src/logger/{descriptors → primitives}/$logger.ts +2 -2
- package/src/logger/services/Logger.ts +1 -1
- package/src/orm/constants/PG_SYMBOLS.ts +2 -2
- package/src/orm/index.browser.ts +2 -2
- package/src/orm/index.ts +8 -8
- package/src/orm/{descriptors → primitives}/$entity.ts +11 -11
- package/src/orm/{descriptors → primitives}/$repository.ts +2 -2
- package/src/orm/{descriptors → primitives}/$sequence.ts +8 -8
- package/src/orm/{descriptors → primitives}/$transaction.ts +4 -4
- package/src/orm/providers/DrizzleKitProvider.ts +1 -1
- package/src/orm/providers/PostgresTypeProvider.ts +3 -3
- package/src/orm/providers/RepositoryProvider.ts +4 -4
- package/src/orm/providers/drivers/DatabaseProvider.ts +7 -7
- package/src/orm/services/ModelBuilder.ts +9 -9
- package/src/orm/services/PgRelationManager.ts +2 -2
- package/src/orm/services/PostgresModelBuilder.ts +5 -5
- package/src/orm/services/Repository.ts +7 -7
- package/src/orm/services/SqliteModelBuilder.ts +5 -5
- package/src/queue/index.ts +7 -7
- package/src/queue/{descriptors → primitives}/$consumer.ts +15 -15
- package/src/queue/{descriptors → primitives}/$queue.ts +12 -12
- package/src/queue/providers/WorkerProvider.ts +7 -7
- package/src/retry/index.ts +3 -3
- package/src/retry/{descriptors → primitives}/$retry.ts +19 -17
- package/src/scheduler/index.ts +3 -3
- package/src/scheduler/{descriptors → primitives}/$scheduler.ts +9 -9
- package/src/scheduler/providers/CronProvider.ts +1 -1
- package/src/security/index.ts +9 -9
- package/src/security/{descriptors → primitives}/$permission.ts +7 -7
- package/src/security/{descriptors → primitives}/$realm.ts +6 -12
- package/src/security/{descriptors → primitives}/$role.ts +12 -12
- package/src/security/{descriptors → primitives}/$serviceAccount.ts +8 -8
- package/src/server/index.browser.ts +1 -1
- package/src/server/index.ts +14 -14
- package/src/server/{descriptors → primitives}/$action.ts +13 -13
- package/src/server/{descriptors → primitives}/$route.ts +9 -9
- package/src/server/providers/NodeHttpServerProvider.ts +2 -2
- package/src/server/services/HttpClient.ts +1 -1
- package/src/server-auth/index.browser.ts +1 -1
- package/src/server-auth/index.ts +6 -6
- package/src/server-auth/{descriptors → primitives}/$auth.ts +10 -10
- package/src/server-auth/{descriptors → primitives}/$authCredentials.ts +4 -4
- package/src/server-auth/{descriptors → primitives}/$authGithub.ts +4 -4
- package/src/server-auth/{descriptors → primitives}/$authGoogle.ts +4 -4
- package/src/server-auth/providers/ServerAuthProvider.ts +4 -4
- package/src/server-cache/providers/ServerCacheProvider.ts +7 -7
- package/src/server-compress/providers/ServerCompressProvider.ts +3 -3
- package/src/server-cookies/index.browser.ts +2 -2
- package/src/server-cookies/index.ts +5 -5
- package/src/server-cookies/{descriptors → primitives}/$cookie.browser.ts +12 -12
- package/src/server-cookies/{descriptors → primitives}/$cookie.ts +13 -13
- package/src/server-cookies/providers/ServerCookiesProvider.ts +4 -4
- package/src/server-cookies/services/CookieParser.ts +1 -1
- package/src/server-cors/index.ts +3 -3
- package/src/server-cors/{descriptors → primitives}/$cors.ts +11 -13
- package/src/server-cors/providers/ServerCorsProvider.ts +5 -5
- package/src/server-links/index.browser.ts +5 -5
- package/src/server-links/index.ts +9 -9
- package/src/server-links/{descriptors → primitives}/$remote.ts +11 -11
- package/src/server-links/providers/LinkProvider.ts +7 -7
- package/src/server-links/providers/{RemoteDescriptorProvider.ts → RemotePrimitiveProvider.ts} +6 -6
- package/src/server-links/providers/ServerLinksProvider.ts +3 -3
- package/src/server-proxy/index.ts +3 -3
- package/src/server-proxy/{descriptors → primitives}/$proxy.ts +8 -8
- package/src/server-proxy/providers/ServerProxyProvider.ts +4 -4
- package/src/server-rate-limit/index.ts +6 -6
- package/src/server-rate-limit/{descriptors → primitives}/$rateLimit.ts +13 -13
- package/src/server-rate-limit/providers/ServerRateLimitProvider.ts +5 -5
- package/src/server-security/index.ts +3 -3
- package/src/server-security/{descriptors → primitives}/$basicAuth.ts +13 -13
- package/src/server-security/providers/ServerBasicAuthProvider.ts +5 -5
- package/src/server-security/providers/ServerSecurityProvider.ts +4 -4
- package/src/server-static/index.ts +3 -3
- package/src/server-static/{descriptors → primitives}/$serve.ts +8 -10
- package/src/server-static/providers/ServerStaticProvider.ts +6 -6
- package/src/server-swagger/index.ts +5 -5
- package/src/server-swagger/{descriptors → primitives}/$swagger.ts +9 -9
- package/src/server-swagger/providers/ServerSwaggerProvider.ts +11 -10
- package/src/sms/index.ts +4 -4
- package/src/sms/{descriptors → primitives}/$sms.ts +8 -8
- package/src/thread/index.ts +3 -3
- package/src/thread/{descriptors → primitives}/$thread.ts +13 -13
- package/src/thread/providers/ThreadProvider.ts +7 -9
- package/src/topic/index.ts +5 -5
- package/src/topic/{descriptors → primitives}/$subscriber.ts +14 -14
- package/src/topic/{descriptors → primitives}/$topic.ts +10 -10
- package/src/topic/providers/TopicProvider.ts +4 -4
- package/src/vite/helpers/boot.ts +3 -3
- package/src/vite/tasks/copyAssets.ts +1 -1
- package/src/vite/tasks/generateSitemap.ts +3 -3
- package/src/vite/tasks/prerenderPages.ts +2 -2
- package/src/vite/tasks/runAlepha.ts +2 -2
- package/src/websocket/index.browser.ts +3 -3
- package/src/websocket/index.shared.ts +2 -2
- package/src/websocket/index.ts +4 -4
- package/src/websocket/interfaces/WebSocketInterfaces.ts +3 -3
- package/src/websocket/{descriptors → primitives}/$channel.ts +10 -10
- package/src/websocket/{descriptors → primitives}/$websocket.ts +8 -8
- package/src/websocket/providers/NodeWebSocketServerProvider.ts +7 -7
- package/src/websocket/providers/WebSocketServerProvider.ts +3 -3
- package/src/websocket/services/WebSocketClient.ts +5 -5
- package/dist/api-files/index.cjs +0 -1293
- package/dist/api-files/index.cjs.map +0 -1
- package/dist/api-files/index.d.cts +0 -829
- package/dist/api-jobs/index.cjs +0 -274
- package/dist/api-jobs/index.cjs.map +0 -1
- package/dist/api-jobs/index.d.cts +0 -654
- package/dist/api-notifications/index.cjs +0 -380
- package/dist/api-notifications/index.cjs.map +0 -1
- package/dist/api-notifications/index.d.cts +0 -289
- package/dist/api-parameters/index.cjs +0 -66
- package/dist/api-parameters/index.cjs.map +0 -1
- package/dist/api-parameters/index.d.cts +0 -84
- package/dist/api-users/index.cjs +0 -6009
- package/dist/api-users/index.cjs.map +0 -1
- package/dist/api-users/index.d.cts +0 -4740
- package/dist/api-verifications/index.cjs +0 -407
- package/dist/api-verifications/index.cjs.map +0 -1
- package/dist/api-verifications/index.d.cts +0 -207
- package/dist/batch/index.cjs +0 -408
- package/dist/batch/index.cjs.map +0 -1
- package/dist/batch/index.d.cts +0 -330
- package/dist/bin/index.cjs +0 -17
- package/dist/bin/index.cjs.map +0 -1
- package/dist/bin/index.d.cts +0 -1
- package/dist/bucket/index.cjs +0 -303
- package/dist/bucket/index.cjs.map +0 -1
- package/dist/bucket/index.d.cts +0 -355
- package/dist/cache/index.cjs +0 -241
- package/dist/cache/index.cjs.map +0 -1
- package/dist/cache/index.d.cts +0 -202
- package/dist/cache-redis/index.cjs +0 -84
- package/dist/cache-redis/index.cjs.map +0 -1
- package/dist/cache-redis/index.d.cts +0 -40
- package/dist/cli/chunk-DSlc6foC.cjs +0 -43
- package/dist/cli/dist-BBPjuQ56.js +0 -2778
- package/dist/cli/dist-Sz2EXvQX.cjs.map +0 -1
- package/dist/cli/index.cjs +0 -1241
- package/dist/cli/index.cjs.map +0 -1
- package/dist/cli/index.d.cts +0 -422
- package/dist/command/index.cjs +0 -693
- package/dist/command/index.cjs.map +0 -1
- package/dist/command/index.d.cts +0 -340
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.d.cts +0 -1927
- package/dist/datetime/index.cjs +0 -318
- package/dist/datetime/index.cjs.map +0 -1
- package/dist/datetime/index.d.cts +0 -145
- package/dist/email/index.cjs +0 -10874
- package/dist/email/index.cjs.map +0 -1
- package/dist/email/index.d.cts +0 -186
- package/dist/fake/index.cjs +0 -34641
- package/dist/fake/index.cjs.map +0 -1
- package/dist/fake/index.d.cts +0 -74
- package/dist/file/index.cjs +0 -1212
- package/dist/file/index.cjs.map +0 -1
- package/dist/file/index.d.cts +0 -698
- package/dist/lock/index.cjs +0 -226
- package/dist/lock/index.cjs.map +0 -1
- package/dist/lock/index.d.cts +0 -361
- package/dist/lock-redis/index.cjs +0 -113
- package/dist/lock-redis/index.cjs.map +0 -1
- package/dist/lock-redis/index.d.cts +0 -24
- package/dist/logger/index.cjs +0 -521
- package/dist/logger/index.cjs.map +0 -1
- package/dist/logger/index.d.cts +0 -281
- package/dist/orm/index.cjs +0 -2986
- package/dist/orm/index.cjs.map +0 -1
- package/dist/orm/index.d.cts +0 -2213
- package/dist/queue/index.cjs +0 -1044
- package/dist/queue/index.cjs.map +0 -1
- package/dist/queue/index.d.cts +0 -1265
- package/dist/queue-redis/index.cjs +0 -873
- package/dist/queue-redis/index.cjs.map +0 -1
- package/dist/queue-redis/index.d.cts +0 -82
- package/dist/redis/index.cjs +0 -153
- package/dist/redis/index.cjs.map +0 -1
- package/dist/redis/index.d.cts +0 -82
- package/dist/retry/index.cjs +0 -146
- package/dist/retry/index.cjs.map +0 -1
- package/dist/retry/index.d.cts +0 -172
- package/dist/router/index.cjs +0 -111
- package/dist/router/index.cjs.map +0 -1
- package/dist/router/index.d.cts +0 -46
- package/dist/scheduler/index.cjs +0 -576
- package/dist/scheduler/index.cjs.map +0 -1
- package/dist/scheduler/index.d.cts +0 -145
- package/dist/security/index.cjs +0 -2402
- package/dist/security/index.cjs.map +0 -1
- package/dist/security/index.d.cts +0 -598
- package/dist/server/index.cjs +0 -1680
- package/dist/server/index.cjs.map +0 -1
- package/dist/server/index.d.cts +0 -810
- package/dist/server-auth/index.cjs +0 -3146
- package/dist/server-auth/index.cjs.map +0 -1
- package/dist/server-auth/index.d.cts +0 -1164
- package/dist/server-cache/index.cjs +0 -252
- package/dist/server-cache/index.cjs.map +0 -1
- package/dist/server-cache/index.d.cts +0 -164
- package/dist/server-compress/index.cjs +0 -141
- package/dist/server-compress/index.cjs.map +0 -1
- package/dist/server-compress/index.d.cts +0 -38
- package/dist/server-cookies/index.cjs +0 -234
- package/dist/server-cookies/index.cjs.map +0 -1
- package/dist/server-cookies/index.d.cts +0 -144
- package/dist/server-cors/index.cjs +0 -201
- package/dist/server-cors/index.cjs.map +0 -1
- package/dist/server-cors/index.d.cts +0 -140
- package/dist/server-health/index.cjs +0 -62
- package/dist/server-health/index.cjs.map +0 -1
- package/dist/server-health/index.d.cts +0 -58
- package/dist/server-helmet/index.cjs +0 -131
- package/dist/server-helmet/index.cjs.map +0 -1
- package/dist/server-helmet/index.d.cts +0 -97
- package/dist/server-links/index.cjs +0 -992
- package/dist/server-links/index.cjs.map +0 -1
- package/dist/server-links/index.d.cts +0 -513
- package/dist/server-metrics/index.cjs +0 -4535
- package/dist/server-metrics/index.cjs.map +0 -1
- package/dist/server-metrics/index.d.cts +0 -35
- package/dist/server-multipart/index.cjs +0 -237
- package/dist/server-multipart/index.cjs.map +0 -1
- package/dist/server-multipart/index.d.cts +0 -50
- package/dist/server-proxy/index.cjs +0 -186
- package/dist/server-proxy/index.cjs.map +0 -1
- package/dist/server-proxy/index.d.cts +0 -234
- package/dist/server-rate-limit/index.cjs +0 -241
- package/dist/server-rate-limit/index.cjs.map +0 -1
- package/dist/server-rate-limit/index.d.cts +0 -183
- package/dist/server-security/index.cjs +0 -316
- package/dist/server-security/index.cjs.map +0 -1
- package/dist/server-security/index.d.cts +0 -173
- package/dist/server-static/index.cjs +0 -170
- package/dist/server-static/index.cjs.map +0 -1
- package/dist/server-static/index.d.cts +0 -121
- package/dist/server-swagger/index.cjs +0 -1021
- package/dist/server-swagger/index.cjs.map +0 -1
- package/dist/server-swagger/index.d.cts +0 -382
- package/dist/sms/index.cjs +0 -221
- package/dist/sms/index.cjs.map +0 -1
- package/dist/sms/index.d.cts +0 -130
- package/dist/thread/index.cjs +0 -350
- package/dist/thread/index.cjs.map +0 -1
- package/dist/thread/index.d.cts +0 -260
- package/dist/topic/index.cjs +0 -282
- package/dist/topic/index.cjs.map +0 -1
- package/dist/topic/index.d.cts +0 -523
- package/dist/topic-redis/index.cjs +0 -71
- package/dist/topic-redis/index.cjs.map +0 -1
- package/dist/topic-redis/index.d.cts +0 -42
- package/dist/vite/index.cjs +0 -1077
- package/dist/vite/index.cjs.map +0 -1
- package/dist/vite/index.d.cts +0 -542
- package/dist/websocket/index.cjs +0 -1117
- package/dist/websocket/index.cjs.map +0 -1
- package/dist/websocket/index.d.cts +0 -861
- package/src/api-notifications/providers/MemorySmsProvider.ts +0 -20
- package/src/api-notifications/providers/SmsProvider.ts +0 -8
- /package/src/core/{descriptors → primitives}/$atom.ts +0 -0
- /package/src/core/{descriptors → primitives}/$env.ts +0 -0
- /package/src/server-auth/{descriptors → primitives}/$authApple.ts +0 -0
- /package/src/server-links/{descriptors → primitives}/$client.ts +0 -0
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
$inject,
|
|
3
|
-
AlephaError,
|
|
4
|
-
createDescriptor,
|
|
5
|
-
Descriptor,
|
|
6
|
-
KIND,
|
|
7
|
-
} from "alepha";
|
|
1
|
+
import { $inject, AlephaError, createPrimitive, KIND, Primitive } from "alepha";
|
|
8
2
|
import {
|
|
9
3
|
DateTimeProvider,
|
|
10
4
|
type Duration,
|
|
@@ -21,13 +15,13 @@ import type { UserAccount } from "../schemas/userAccountInfoSchema.ts";
|
|
|
21
15
|
/**
|
|
22
16
|
* Create a new realm.
|
|
23
17
|
*/
|
|
24
|
-
export const $realm = (options:
|
|
25
|
-
return
|
|
18
|
+
export const $realm = (options: RealmPrimitiveOptions): RealmPrimitive => {
|
|
19
|
+
return createPrimitive(RealmPrimitive, options);
|
|
26
20
|
};
|
|
27
21
|
|
|
28
22
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
29
23
|
|
|
30
|
-
export type
|
|
24
|
+
export type RealmPrimitiveOptions = {
|
|
31
25
|
/**
|
|
32
26
|
* Define the realm name.
|
|
33
27
|
* If not provided, it will use the property key.
|
|
@@ -109,7 +103,7 @@ export interface RealmExternal {
|
|
|
109
103
|
|
|
110
104
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
111
105
|
|
|
112
|
-
export class
|
|
106
|
+
export class RealmPrimitive extends Primitive<RealmPrimitiveOptions> {
|
|
113
107
|
protected readonly securityProvider = $inject(SecurityProvider);
|
|
114
108
|
protected readonly dateTimeProvider = $inject(DateTimeProvider);
|
|
115
109
|
protected readonly jwt = $inject(JwtProvider);
|
|
@@ -342,7 +336,7 @@ export class RealmDescriptor extends Descriptor<RealmDescriptorOptions> {
|
|
|
342
336
|
}
|
|
343
337
|
}
|
|
344
338
|
|
|
345
|
-
$realm[KIND] =
|
|
339
|
+
$realm[KIND] = RealmPrimitive;
|
|
346
340
|
|
|
347
341
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
348
342
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { $inject,
|
|
1
|
+
import { $inject, createPrimitive, KIND, Primitive } from "alepha";
|
|
2
2
|
import { SecurityProvider } from "../providers/SecurityProvider.ts";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { PermissionPrimitive } from "./$permission.ts";
|
|
4
|
+
import type { RealmPrimitive } from "./$realm.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Create a new role.
|
|
8
8
|
*/
|
|
9
|
-
export const $role = (options:
|
|
10
|
-
return
|
|
9
|
+
export const $role = (options: RolePrimitiveOptions = {}): RolePrimitive => {
|
|
10
|
+
return createPrimitive(RolePrimitive, options);
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
14
14
|
|
|
15
|
-
export interface
|
|
15
|
+
export interface RolePrimitiveOptions {
|
|
16
16
|
/**
|
|
17
17
|
* Name of the role.
|
|
18
18
|
*/
|
|
@@ -23,7 +23,7 @@ export interface RoleDescriptorOptions {
|
|
|
23
23
|
*/
|
|
24
24
|
description?: string;
|
|
25
25
|
|
|
26
|
-
realm?: string |
|
|
26
|
+
realm?: string | RealmPrimitive;
|
|
27
27
|
|
|
28
28
|
permissions?: Array<
|
|
29
29
|
| string
|
|
@@ -35,7 +35,7 @@ export interface RoleDescriptorOptions {
|
|
|
35
35
|
>;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export class
|
|
38
|
+
export class RolePrimitive extends Primitive<RolePrimitiveOptions> {
|
|
39
39
|
protected readonly securityProvider = $inject(SecurityProvider);
|
|
40
40
|
|
|
41
41
|
public get name(): string {
|
|
@@ -62,19 +62,19 @@ export class RoleDescriptor extends Descriptor<RoleDescriptorOptions> {
|
|
|
62
62
|
/**
|
|
63
63
|
* Get the realm of the role.
|
|
64
64
|
*/
|
|
65
|
-
public get realm(): string |
|
|
65
|
+
public get realm(): string | RealmPrimitive | undefined {
|
|
66
66
|
return this.options.realm;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
public can(permission: string |
|
|
69
|
+
public can(permission: string | PermissionPrimitive): boolean {
|
|
70
70
|
return this.securityProvider.can(this.name, permission);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
public check(permission: string |
|
|
73
|
+
public check(permission: string | PermissionPrimitive) {
|
|
74
74
|
return this.securityProvider.checkPermission(permission, this.name);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
79
79
|
|
|
80
|
-
$role[KIND] =
|
|
80
|
+
$role[KIND] = RolePrimitive;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $context } from "alepha";
|
|
2
2
|
import { DateTimeProvider } from "alepha/datetime";
|
|
3
3
|
import type { UserAccount } from "../schemas/userAccountInfoSchema.ts";
|
|
4
|
-
import type { AccessTokenResponse,
|
|
4
|
+
import type { AccessTokenResponse, RealmPrimitive } from "./$realm.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Allow to get an access token for a service account.
|
|
@@ -32,8 +32,8 @@ import type { AccessTokenResponse, RealmDescriptor } from "./$realm.ts";
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
export const $serviceAccount = (
|
|
35
|
-
options:
|
|
36
|
-
):
|
|
35
|
+
options: ServiceAccountPrimitiveOptions,
|
|
36
|
+
): ServiceAccountPrimitive => {
|
|
37
37
|
const { alepha } = $context();
|
|
38
38
|
const store: {
|
|
39
39
|
cache?: AccessTokenResponse;
|
|
@@ -150,19 +150,19 @@ export const $serviceAccount = (
|
|
|
150
150
|
};
|
|
151
151
|
};
|
|
152
152
|
|
|
153
|
-
export type
|
|
153
|
+
export type ServiceAccountPrimitiveOptions = {
|
|
154
154
|
gracePeriod?: number; // Grace period in milliseconds before token expiration
|
|
155
155
|
} & (
|
|
156
156
|
| {
|
|
157
|
-
oauth2:
|
|
157
|
+
oauth2: Oauth2ServiceAccountPrimitiveOptions;
|
|
158
158
|
}
|
|
159
159
|
| {
|
|
160
|
-
realm:
|
|
160
|
+
realm: RealmPrimitive;
|
|
161
161
|
user: UserAccount;
|
|
162
162
|
}
|
|
163
163
|
);
|
|
164
164
|
|
|
165
|
-
export interface
|
|
165
|
+
export interface Oauth2ServiceAccountPrimitiveOptions {
|
|
166
166
|
/**
|
|
167
167
|
* Get Token URL.
|
|
168
168
|
*/
|
|
@@ -179,7 +179,7 @@ export interface Oauth2ServiceAccountDescriptorOptions {
|
|
|
179
179
|
clientSecret: string;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
export interface
|
|
182
|
+
export interface ServiceAccountPrimitive {
|
|
183
183
|
token: () => Promise<string>;
|
|
184
184
|
}
|
|
185
185
|
|
package/src/server/index.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { Server } from "node:http";
|
|
2
|
-
import { $module, type Alepha, type
|
|
3
|
-
import {
|
|
4
|
-
$action,
|
|
5
|
-
type ActionDescriptor,
|
|
6
|
-
type ClientRequestOptions,
|
|
7
|
-
} from "./descriptors/$action.ts";
|
|
8
|
-
import { $route } from "./descriptors/$route.ts";
|
|
2
|
+
import { $module, type Alepha, type PrimitiveFactoryLike } from "alepha";
|
|
9
3
|
import type { HttpError } from "./errors/HttpError.ts";
|
|
10
4
|
import type {
|
|
11
5
|
NodeRequestEvent,
|
|
@@ -16,6 +10,12 @@ import type {
|
|
|
16
10
|
ServerRoute,
|
|
17
11
|
WebRequestEvent,
|
|
18
12
|
} from "./interfaces/ServerRequest.ts";
|
|
13
|
+
import {
|
|
14
|
+
$action,
|
|
15
|
+
type ActionPrimitive,
|
|
16
|
+
type ClientRequestOptions,
|
|
17
|
+
} from "./primitives/$action.ts";
|
|
18
|
+
import { $route } from "./primitives/$route.ts";
|
|
19
19
|
import { BunHttpServerProvider } from "./providers/BunHttpServerProvider.ts";
|
|
20
20
|
import { NodeHttpServerProvider } from "./providers/NodeHttpServerProvider.ts";
|
|
21
21
|
import { ServerBodyParserProvider } from "./providers/ServerBodyParserProvider.ts";
|
|
@@ -36,12 +36,12 @@ declare module "alepha" {
|
|
|
36
36
|
// -----------------------------------------------------------------------------------------------------------------
|
|
37
37
|
// Local Actions hooks
|
|
38
38
|
"action:onRequest": {
|
|
39
|
-
action:
|
|
39
|
+
action: ActionPrimitive<RequestConfigSchema>;
|
|
40
40
|
request: ServerRequest;
|
|
41
41
|
options: ClientRequestOptions;
|
|
42
42
|
};
|
|
43
43
|
"action:onResponse": {
|
|
44
|
-
action:
|
|
44
|
+
action: ActionPrimitive<RequestConfigSchema>;
|
|
45
45
|
request: ServerRequest;
|
|
46
46
|
options: ClientRequestOptions;
|
|
47
47
|
response: any;
|
|
@@ -96,9 +96,9 @@ declare module "alepha" {
|
|
|
96
96
|
|
|
97
97
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
98
98
|
|
|
99
|
-
export * from "./descriptors/$action.ts";
|
|
100
|
-
export * from "./descriptors/$route.ts";
|
|
101
99
|
export * from "./index.shared.ts";
|
|
100
|
+
export * from "./primitives/$action.ts";
|
|
101
|
+
export * from "./primitives/$route.ts";
|
|
102
102
|
export * from "./providers/BunHttpServerProvider.ts";
|
|
103
103
|
export * from "./providers/NodeHttpServerProvider.ts";
|
|
104
104
|
export * from "./providers/ServerLoggerProvider.ts";
|
|
@@ -110,9 +110,9 @@ export * from "./providers/ServerTimingProvider.ts";
|
|
|
110
110
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
111
111
|
|
|
112
112
|
/**
|
|
113
|
-
* Provides high-performance HTTP server capabilities with declarative routing and action
|
|
113
|
+
* Provides high-performance HTTP server capabilities with declarative routing and action primitives.
|
|
114
114
|
*
|
|
115
|
-
* The server module enables building REST APIs and web applications using `$route` and `$action`
|
|
115
|
+
* The server module enables building REST APIs and web applications using `$route` and `$action` primitives
|
|
116
116
|
* on class properties. It provides automatic request/response handling, schema validation, middleware support,
|
|
117
117
|
* and seamless integration with other Alepha modules for a complete backend solution.
|
|
118
118
|
*
|
|
@@ -122,7 +122,7 @@ export * from "./providers/ServerTimingProvider.ts";
|
|
|
122
122
|
*/
|
|
123
123
|
export const AlephaServer = $module({
|
|
124
124
|
name: "alepha.server",
|
|
125
|
-
|
|
125
|
+
primitives: [$route, $action as PrimitiveFactoryLike],
|
|
126
126
|
services: [
|
|
127
127
|
ServerProvider,
|
|
128
128
|
BunHttpServerProvider,
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
$env,
|
|
3
3
|
$inject,
|
|
4
4
|
type Async,
|
|
5
|
-
|
|
6
|
-
Descriptor,
|
|
5
|
+
createPrimitive,
|
|
7
6
|
isTypeFile,
|
|
8
7
|
KIND,
|
|
8
|
+
Primitive,
|
|
9
9
|
type Static,
|
|
10
10
|
type TObject,
|
|
11
11
|
type TSchema,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
} from "../services/HttpClient.ts";
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* Creates a server action
|
|
33
|
+
* Creates a server action primitive for defining type-safe HTTP endpoints.
|
|
34
34
|
*
|
|
35
35
|
* Server actions are the core building blocks for REST APIs in Alepha, providing declarative
|
|
36
36
|
* HTTP endpoints with full type safety, automatic validation, and OpenAPI documentation.
|
|
@@ -95,9 +95,9 @@ import {
|
|
|
95
95
|
* ```
|
|
96
96
|
*/
|
|
97
97
|
export const $action = <TConfig extends RequestConfigSchema>(
|
|
98
|
-
options:
|
|
99
|
-
):
|
|
100
|
-
const instance =
|
|
98
|
+
options: ActionPrimitiveOptions<TConfig>,
|
|
99
|
+
): ActionPrimitiveFn<TConfig> => {
|
|
100
|
+
const instance = createPrimitive(ActionPrimitive<TConfig>, options);
|
|
101
101
|
const fn = (
|
|
102
102
|
config?: ClientRequestEntry<TConfig>,
|
|
103
103
|
options?: ClientRequestOptions,
|
|
@@ -109,12 +109,12 @@ export const $action = <TConfig extends RequestConfigSchema>(
|
|
|
109
109
|
return instance.options.name || instance.config.propertyKey;
|
|
110
110
|
},
|
|
111
111
|
});
|
|
112
|
-
return Object.setPrototypeOf(fn, instance) as
|
|
112
|
+
return Object.setPrototypeOf(fn, instance) as ActionPrimitiveFn<TConfig>;
|
|
113
113
|
};
|
|
114
114
|
|
|
115
115
|
// ----------------------------------------------------------------------------------------------------------
|
|
116
116
|
|
|
117
|
-
export interface
|
|
117
|
+
export interface ActionPrimitiveOptions<TConfig extends RequestConfigSchema>
|
|
118
118
|
extends Omit<ServerRoute, "handler" | "path" | "schema" | "mapParams"> {
|
|
119
119
|
/**
|
|
120
120
|
* Name of the action.
|
|
@@ -198,9 +198,9 @@ const envSchema = t.object({
|
|
|
198
198
|
}),
|
|
199
199
|
});
|
|
200
200
|
|
|
201
|
-
export class
|
|
201
|
+
export class ActionPrimitive<
|
|
202
202
|
TConfig extends RequestConfigSchema,
|
|
203
|
-
> extends
|
|
203
|
+
> extends Primitive<ActionPrimitiveOptions<TConfig>> {
|
|
204
204
|
protected readonly log = $logger();
|
|
205
205
|
protected readonly env = $env(envSchema);
|
|
206
206
|
protected readonly httpClient = $inject(HttpClient);
|
|
@@ -416,15 +416,15 @@ export class ActionDescriptor<
|
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
export interface
|
|
420
|
-
extends
|
|
419
|
+
export interface ActionPrimitiveFn<TConfig extends RequestConfigSchema>
|
|
420
|
+
extends ActionPrimitive<TConfig> {
|
|
421
421
|
(
|
|
422
422
|
config?: ClientRequestEntry<TConfig>,
|
|
423
423
|
options?: ClientRequestOptions,
|
|
424
424
|
): Promise<ClientRequestResponse<TConfig>>;
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
$action[KIND] =
|
|
427
|
+
$action[KIND] = ActionPrimitive;
|
|
428
428
|
|
|
429
429
|
// ----------------------------------------------------------------------------------------------------------
|
|
430
430
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $inject,
|
|
1
|
+
import { $inject, createPrimitive, KIND, Primitive } from "alepha";
|
|
2
2
|
import type {
|
|
3
3
|
RequestConfigSchema,
|
|
4
4
|
ServerRoute,
|
|
@@ -8,28 +8,28 @@ import { ServerRouterProvider } from "../providers/ServerRouterProvider.ts";
|
|
|
8
8
|
/**
|
|
9
9
|
* Create a basic endpoint.
|
|
10
10
|
*
|
|
11
|
-
* It's a low level
|
|
11
|
+
* It's a low level primitive. You probably want to use `$action` instead.
|
|
12
12
|
*
|
|
13
13
|
* @see {@link $action}
|
|
14
14
|
* @see {@link $page}
|
|
15
15
|
*/
|
|
16
16
|
export const $route = <TConfig extends RequestConfigSchema>(
|
|
17
|
-
options:
|
|
18
|
-
):
|
|
19
|
-
return
|
|
17
|
+
options: RoutePrimitiveOptions<TConfig>,
|
|
18
|
+
): RoutePrimitive<TConfig> => {
|
|
19
|
+
return createPrimitive(RoutePrimitive<TConfig>, options);
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
23
23
|
|
|
24
|
-
export interface
|
|
24
|
+
export interface RoutePrimitiveOptions<
|
|
25
25
|
TConfig extends RequestConfigSchema = RequestConfigSchema,
|
|
26
26
|
> extends ServerRoute<TConfig> {}
|
|
27
27
|
|
|
28
28
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
29
29
|
|
|
30
|
-
export class
|
|
30
|
+
export class RoutePrimitive<
|
|
31
31
|
TConfig extends RequestConfigSchema,
|
|
32
|
-
> extends
|
|
32
|
+
> extends Primitive<RoutePrimitiveOptions<TConfig>> {
|
|
33
33
|
protected readonly serverRouterProvider = $inject(ServerRouterProvider);
|
|
34
34
|
|
|
35
35
|
protected onInit() {
|
|
@@ -37,4 +37,4 @@ export class RouteDescriptor<
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
$route[KIND] =
|
|
40
|
+
$route[KIND] = RoutePrimitive;
|
|
@@ -57,7 +57,7 @@ export class NodeHttpServerProvider extends ServerProvider {
|
|
|
57
57
|
on: "start",
|
|
58
58
|
handler: async () => {
|
|
59
59
|
await this.listen();
|
|
60
|
-
this.alepha.
|
|
60
|
+
this.alepha.store.set("alepha.node.server", this.server);
|
|
61
61
|
},
|
|
62
62
|
});
|
|
63
63
|
|
|
@@ -67,7 +67,7 @@ export class NodeHttpServerProvider extends ServerProvider {
|
|
|
67
67
|
return createServer(
|
|
68
68
|
{
|
|
69
69
|
// nov 25 - keep connections alive for better performance, cuz we http/1.1 by default
|
|
70
|
-
keepAlive:
|
|
70
|
+
keepAlive: this.alepha.isProduction(),
|
|
71
71
|
},
|
|
72
72
|
func,
|
|
73
73
|
);
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
import { $cache } from "alepha/cache";
|
|
11
11
|
import type { DurationLike } from "alepha/datetime";
|
|
12
12
|
import { $logger } from "alepha/logger";
|
|
13
|
-
import type { ClientRequestOptions } from "../descriptors/$action.ts";
|
|
14
13
|
import { HttpError } from "../errors/HttpError.ts";
|
|
15
14
|
import { isMultipart } from "../helpers/isMultipart.ts";
|
|
16
15
|
import type {
|
|
@@ -18,6 +17,7 @@ import type {
|
|
|
18
17
|
TRequestBody,
|
|
19
18
|
TResponseBody,
|
|
20
19
|
} from "../interfaces/ServerRequest.ts";
|
|
20
|
+
import type { ClientRequestOptions } from "../primitives/$action.ts";
|
|
21
21
|
import { errorSchema } from "../schemas/errorSchema.ts";
|
|
22
22
|
|
|
23
23
|
export class HttpClient {
|
package/src/server-auth/index.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { $module } from "alepha";
|
|
2
2
|
import type { UserAccount } from "alepha/security";
|
|
3
3
|
import { AlephaServerCookies } from "alepha/server/cookies";
|
|
4
|
-
import { $auth } from "./
|
|
4
|
+
import { $auth } from "./primitives/$auth.ts";
|
|
5
5
|
import { ServerAuthProvider } from "./providers/ServerAuthProvider.ts";
|
|
6
6
|
|
|
7
7
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
8
8
|
|
|
9
|
-
export * from "./descriptors/$auth.ts";
|
|
10
|
-
export * from "./descriptors/$authCredentials.ts";
|
|
11
|
-
export * from "./descriptors/$authGithub.ts";
|
|
12
|
-
export * from "./descriptors/$authGoogle.ts";
|
|
13
9
|
export * from "./index.shared.ts";
|
|
10
|
+
export * from "./primitives/$auth.ts";
|
|
11
|
+
export * from "./primitives/$authCredentials.ts";
|
|
12
|
+
export * from "./primitives/$authGithub.ts";
|
|
13
|
+
export * from "./primitives/$authGoogle.ts";
|
|
14
14
|
export * from "./providers/ServerAuthProvider.ts";
|
|
15
15
|
|
|
16
16
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -43,6 +43,6 @@ declare module "alepha" {
|
|
|
43
43
|
*/
|
|
44
44
|
export const AlephaServerAuth = $module({
|
|
45
45
|
name: "alepha.server.auth",
|
|
46
|
-
|
|
46
|
+
primitives: [$auth],
|
|
47
47
|
services: [AlephaServerCookies, ServerAuthProvider],
|
|
48
48
|
});
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
$inject,
|
|
3
3
|
AlephaError,
|
|
4
4
|
type Async,
|
|
5
|
-
|
|
6
|
-
Descriptor,
|
|
5
|
+
createPrimitive,
|
|
7
6
|
KIND,
|
|
7
|
+
Primitive,
|
|
8
8
|
} from "alepha";
|
|
9
9
|
import { DateTimeProvider } from "alepha/datetime";
|
|
10
10
|
import {
|
|
11
11
|
type AccessTokenResponse,
|
|
12
|
-
type
|
|
12
|
+
type RealmPrimitive,
|
|
13
13
|
SecurityError,
|
|
14
14
|
SecurityProvider,
|
|
15
15
|
type UserAccount,
|
|
@@ -24,7 +24,7 @@ import type { OAuth2Profile } from "../providers/ServerAuthProvider.ts";
|
|
|
24
24
|
import type { Tokens } from "../schemas/tokensSchema.ts";
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
* Creates an authentication provider
|
|
27
|
+
* Creates an authentication provider primitive for handling user login flows.
|
|
28
28
|
*
|
|
29
29
|
* Supports multiple authentication strategies: credentials (username/password), OAuth2,
|
|
30
30
|
* and OIDC (OpenID Connect). Handles token management, user profile retrieval, and
|
|
@@ -57,13 +57,13 @@ import type { Tokens } from "../schemas/tokensSchema.ts";
|
|
|
57
57
|
* }
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
export const $auth = (options:
|
|
61
|
-
return
|
|
60
|
+
export const $auth = (options: AuthPrimitiveOptions): AuthPrimitive => {
|
|
61
|
+
return createPrimitive(AuthPrimitive, options);
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
65
65
|
|
|
66
|
-
export type
|
|
66
|
+
export type AuthPrimitiveOptions = {
|
|
67
67
|
/**
|
|
68
68
|
* Name of the identity provider.
|
|
69
69
|
* If not provided, it will be derived from the property key.
|
|
@@ -108,7 +108,7 @@ export type AuthExternal = {
|
|
|
108
108
|
* This relies on the `realm`, which is used to create/verify the access token.
|
|
109
109
|
*/
|
|
110
110
|
export type AuthInternal = {
|
|
111
|
-
realm:
|
|
111
|
+
realm: RealmPrimitive;
|
|
112
112
|
} & (
|
|
113
113
|
| {
|
|
114
114
|
/**
|
|
@@ -251,7 +251,7 @@ export interface OAuth2Options {
|
|
|
251
251
|
|
|
252
252
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
253
253
|
|
|
254
|
-
export class
|
|
254
|
+
export class AuthPrimitive extends Primitive<AuthPrimitiveOptions> {
|
|
255
255
|
protected readonly securityProvider = $inject(SecurityProvider);
|
|
256
256
|
protected readonly dateTimeProvider = $inject(DateTimeProvider);
|
|
257
257
|
|
|
@@ -433,7 +433,7 @@ export class AuthDescriptor extends Descriptor<AuthDescriptorOptions> {
|
|
|
433
433
|
}
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
-
$auth[KIND] =
|
|
436
|
+
$auth[KIND] = AuthPrimitive;
|
|
437
437
|
|
|
438
438
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
439
439
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AlephaError } from "alepha";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RealmPrimitive } from "alepha/security";
|
|
3
3
|
import {
|
|
4
4
|
$auth,
|
|
5
5
|
type CredentialsFn,
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
} from "./$auth.ts";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* Already configured Credentials authentication
|
|
11
|
+
* Already configured Credentials authentication primitive.
|
|
12
12
|
*
|
|
13
13
|
* Uses username and password to authenticate users.
|
|
14
14
|
*/
|
|
15
15
|
export const $authCredentials = (
|
|
16
|
-
realm:
|
|
16
|
+
realm: RealmPrimitive & WithLoginFn,
|
|
17
17
|
options: Partial<CredentialsOptions> = {},
|
|
18
18
|
) => {
|
|
19
19
|
const name = "credentials";
|
|
@@ -24,7 +24,7 @@ export const $authCredentials = (
|
|
|
24
24
|
|
|
25
25
|
if (!account) {
|
|
26
26
|
throw new AlephaError(
|
|
27
|
-
"Credentials authentication requires a login function in the realm
|
|
27
|
+
"Credentials authentication requires a login function in the realm primitive.",
|
|
28
28
|
);
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $context, AlephaError, t } from "alepha";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RealmPrimitive } from "alepha/security";
|
|
3
3
|
import type { OAuth2Profile } from "../providers/ServerAuthProvider.ts";
|
|
4
4
|
import {
|
|
5
5
|
$auth,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./$auth.ts";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Already configured GitHub authentication
|
|
12
|
+
* Already configured GitHub authentication primitive.
|
|
13
13
|
*
|
|
14
14
|
* Uses OAuth2 to authenticate users via their GitHub accounts.
|
|
15
15
|
* Upon successful authentication, it links the GitHub account to a user session.
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
* - `GITHUB_CLIENT_SECRET`: The client secret obtained from the GitHub Developer Settings.
|
|
20
20
|
*/
|
|
21
21
|
export const $authGithub = (
|
|
22
|
-
realm:
|
|
22
|
+
realm: RealmPrimitive & WithLinkFn,
|
|
23
23
|
options: Partial<OidcOptions> = {},
|
|
24
24
|
) => {
|
|
25
25
|
const { alepha } = $context();
|
|
@@ -40,7 +40,7 @@ export const $authGithub = (
|
|
|
40
40
|
|
|
41
41
|
if (!account) {
|
|
42
42
|
throw new AlephaError(
|
|
43
|
-
"Authentication requires a link function in the realm
|
|
43
|
+
"Authentication requires a link function in the realm primitive.",
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $context, AlephaError, t } from "alepha";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RealmPrimitive } from "alepha/security";
|
|
3
3
|
import {
|
|
4
4
|
$auth,
|
|
5
5
|
type LinkAccountFn,
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./$auth.ts";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* Already configured Google authentication
|
|
11
|
+
* Already configured Google authentication primitive.
|
|
12
12
|
*
|
|
13
13
|
* Uses OpenID Connect (OIDC) to authenticate users via their Google accounts.
|
|
14
14
|
* Upon successful authentication, it links the Google account to a user session.
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
* - `GOOGLE_CLIENT_SECRET`: The client secret obtained from the Google Developer Console.
|
|
19
19
|
*/
|
|
20
20
|
export const $authGoogle = (
|
|
21
|
-
realm:
|
|
21
|
+
realm: RealmPrimitive & WithLinkFn,
|
|
22
22
|
options: Partial<OidcOptions> = {},
|
|
23
23
|
) => {
|
|
24
24
|
const { alepha } = $context();
|
|
@@ -39,7 +39,7 @@ export const $authGoogle = (
|
|
|
39
39
|
|
|
40
40
|
if (!account) {
|
|
41
41
|
throw new AlephaError(
|
|
42
|
-
"Authentication requires a link function in the realm
|
|
42
|
+
"Authentication requires a link function in the realm primitive.",
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
randomState,
|
|
23
23
|
} from "openid-client";
|
|
24
24
|
import { alephaServerAuthRoutes } from "../constants/routes.ts";
|
|
25
|
-
import { $auth, type
|
|
25
|
+
import { $auth, type AuthPrimitive } from "../primitives/$auth.ts";
|
|
26
26
|
import type { AuthenticationProvider } from "../schemas/authenticationProviderSchema.ts";
|
|
27
27
|
import { tokenResponseSchema } from "../schemas/tokenResponseSchema.ts";
|
|
28
28
|
import { type Tokens, tokensSchema } from "../schemas/tokensSchema.ts";
|
|
@@ -57,9 +57,9 @@ export class ServerAuthProvider {
|
|
|
57
57
|
schema: tokensSchema,
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
public get identities(): Array<
|
|
60
|
+
public get identities(): Array<AuthPrimitive> {
|
|
61
61
|
return this.alepha
|
|
62
|
-
.
|
|
62
|
+
.primitives($auth)
|
|
63
63
|
.filter((auth) => !auth.options.disabled);
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -603,7 +603,7 @@ export class ServerAuthProvider {
|
|
|
603
603
|
},
|
|
604
604
|
});
|
|
605
605
|
|
|
606
|
-
protected provider(opts: string | { provider: string }):
|
|
606
|
+
protected provider(opts: string | { provider: string }): AuthPrimitive {
|
|
607
607
|
const name = typeof opts === "string" ? opts : opts.provider;
|
|
608
608
|
const identity = this.identities.find((identity) => identity.name === name);
|
|
609
609
|
|