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,11 +1,11 @@
|
|
|
1
1
|
import type { BinaryLike } from "node:crypto";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { $hook, $inject, Alepha } from "alepha";
|
|
4
|
-
import { $cache, type
|
|
4
|
+
import { $cache, type CachePrimitiveOptions } from "alepha/cache";
|
|
5
5
|
import { DateTimeProvider, type DurationLike } from "alepha/datetime";
|
|
6
6
|
import { $logger } from "alepha/logger";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
ActionPrimitive,
|
|
9
9
|
type RequestConfigSchema,
|
|
10
10
|
type ServerRequest,
|
|
11
11
|
type ServerRoute,
|
|
@@ -25,13 +25,13 @@ declare module "alepha/server" {
|
|
|
25
25
|
cache?: ServerRouteCache;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
interface
|
|
28
|
+
interface ActionPrimitive<TConfig extends RequestConfigSchema> {
|
|
29
29
|
invalidate: () => Promise<void>;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
this:
|
|
33
|
+
ActionPrimitive.prototype.invalidate = async function (
|
|
34
|
+
this: ActionPrimitive<RequestConfigSchema>,
|
|
35
35
|
) {
|
|
36
36
|
await this.alepha.inject(ServerCacheProvider).invalidate(this.route);
|
|
37
37
|
};
|
|
@@ -422,11 +422,11 @@ export type ServerRouteCache =
|
|
|
422
422
|
/**
|
|
423
423
|
* If true, enables storing cached responses. (in-memory, Redis, @see alepha/cache for other providers)
|
|
424
424
|
* If a DurationLike is provided, it will be used as the TTL for the cache.
|
|
425
|
-
* If
|
|
425
|
+
* If CachePrimitiveOptions is provided, it will be used to configure the cache storage.
|
|
426
426
|
*
|
|
427
427
|
* @default false
|
|
428
428
|
*/
|
|
429
|
-
store?: true | DurationLike |
|
|
429
|
+
store?: true | DurationLike | CachePrimitiveOptions;
|
|
430
430
|
/**
|
|
431
431
|
* If true, enables ETag support for the cached responses.
|
|
432
432
|
*/
|
|
@@ -2,7 +2,7 @@ import { Readable, type Transform } from "node:stream";
|
|
|
2
2
|
import { ReadableStream } from "node:stream/web";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import * as zlib from "node:zlib";
|
|
5
|
-
import { $hook, $inject, Alepha
|
|
5
|
+
import { $hook, $inject, Alepha } from "alepha";
|
|
6
6
|
import type { ServerResponse } from "alepha/server";
|
|
7
7
|
|
|
8
8
|
const gzip = promisify(zlib.gzip);
|
|
@@ -55,11 +55,11 @@ export class ServerCompressProvider {
|
|
|
55
55
|
"text/plain",
|
|
56
56
|
"text/css",
|
|
57
57
|
],
|
|
58
|
-
...this.alepha.
|
|
58
|
+
...this.alepha.store.get("alepha.server.compress.options"),
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
public readonly onResponse
|
|
62
|
+
public readonly onResponse = $hook({
|
|
63
63
|
on: "server:onResponse",
|
|
64
64
|
handler: async ({ request, response }) => {
|
|
65
65
|
// skip if already compressed
|
|
@@ -3,12 +3,12 @@ import { AlephaServer } from "alepha/server";
|
|
|
3
3
|
|
|
4
4
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
5
5
|
|
|
6
|
-
export * from "./
|
|
6
|
+
export * from "./primitives/$cookie.browser.ts";
|
|
7
7
|
|
|
8
8
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
9
9
|
|
|
10
10
|
export const AlephaServerCookies = $module({
|
|
11
11
|
name: "alepha.server.cookies",
|
|
12
|
-
|
|
12
|
+
primitives: [],
|
|
13
13
|
services: [AlephaServer],
|
|
14
14
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { $module } from "alepha";
|
|
2
2
|
import { AlephaServer } from "alepha/server";
|
|
3
|
-
import { $cookie, type Cookies } from "./
|
|
3
|
+
import { $cookie, type Cookies } from "./primitives/$cookie.ts";
|
|
4
4
|
import { ServerCookiesProvider } from "./providers/ServerCookiesProvider.ts";
|
|
5
5
|
|
|
6
6
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
7
7
|
|
|
8
|
-
export * from "./
|
|
8
|
+
export * from "./primitives/$cookie.ts";
|
|
9
9
|
export * from "./providers/ServerCookiesProvider.ts";
|
|
10
10
|
|
|
11
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -17,9 +17,9 @@ declare module "alepha/server" {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Provides HTTP cookie management capabilities for server requests and responses with type-safe cookie
|
|
20
|
+
* Provides HTTP cookie management capabilities for server requests and responses with type-safe cookie primitives.
|
|
21
21
|
*
|
|
22
|
-
* The server-cookies module enables declarative cookie handling using the `$cookie`
|
|
22
|
+
* The server-cookies module enables declarative cookie handling using the `$cookie` primitive on class properties.
|
|
23
23
|
* It offers automatic cookie parsing, secure cookie configuration, and seamless integration with server routes
|
|
24
24
|
* for managing user sessions, preferences, and authentication tokens.
|
|
25
25
|
*
|
|
@@ -28,6 +28,6 @@ declare module "alepha/server" {
|
|
|
28
28
|
*/
|
|
29
29
|
export const AlephaServerCookies = $module({
|
|
30
30
|
name: "alepha.server.cookies",
|
|
31
|
-
|
|
31
|
+
primitives: [$cookie],
|
|
32
32
|
services: [AlephaServer, ServerCookiesProvider],
|
|
33
33
|
});
|
|
@@ -2,23 +2,23 @@ import {
|
|
|
2
2
|
$inject,
|
|
3
3
|
Alepha,
|
|
4
4
|
AlephaError,
|
|
5
|
-
|
|
6
|
-
Descriptor,
|
|
5
|
+
createPrimitive,
|
|
7
6
|
KIND,
|
|
7
|
+
Primitive,
|
|
8
8
|
type Static,
|
|
9
9
|
type TSchema,
|
|
10
10
|
} from "alepha";
|
|
11
11
|
import { DateTimeProvider } from "alepha/datetime";
|
|
12
12
|
import { CookieParser } from "../services/CookieParser.ts";
|
|
13
13
|
import type {
|
|
14
|
-
|
|
14
|
+
AbstractCookiePrimitive,
|
|
15
15
|
Cookie,
|
|
16
|
-
|
|
16
|
+
CookiePrimitiveOptions,
|
|
17
17
|
Cookies,
|
|
18
18
|
} from "./$cookie.ts";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* Creates a browser-side cookie
|
|
21
|
+
* Creates a browser-side cookie primitive for client-side cookie management.
|
|
22
22
|
*
|
|
23
23
|
* Browser-specific version of $cookie that uses document.cookie API. Supports type-safe
|
|
24
24
|
* cookie operations with schema validation but excludes encryption/signing (use server-side
|
|
@@ -46,16 +46,16 @@ import type {
|
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
48
|
export const $cookie = <T extends TSchema>(
|
|
49
|
-
options:
|
|
50
|
-
):
|
|
51
|
-
return
|
|
49
|
+
options: CookiePrimitiveOptions<T>,
|
|
50
|
+
): AbstractCookiePrimitive<T> => {
|
|
51
|
+
return createPrimitive(BrowserCookiePrimitive<T>, options);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
55
55
|
|
|
56
|
-
export class
|
|
57
|
-
extends
|
|
58
|
-
implements
|
|
56
|
+
export class BrowserCookiePrimitive<T extends TSchema>
|
|
57
|
+
extends Primitive<CookiePrimitiveOptions<T>>
|
|
58
|
+
implements AbstractCookiePrimitive<T>
|
|
59
59
|
{
|
|
60
60
|
protected cookieParser = $inject(CookieParser);
|
|
61
61
|
protected alepha = $inject(Alepha);
|
|
@@ -143,4 +143,4 @@ export class BrowserCookieDescriptor<T extends TSchema>
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
$cookie[KIND] =
|
|
146
|
+
$cookie[KIND] = BrowserCookiePrimitive;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
$inject,
|
|
3
|
-
|
|
4
|
-
Descriptor,
|
|
3
|
+
createPrimitive,
|
|
5
4
|
KIND,
|
|
5
|
+
Primitive,
|
|
6
6
|
type Static,
|
|
7
7
|
type TSchema,
|
|
8
8
|
} from "alepha";
|
|
@@ -11,18 +11,18 @@ import { ServerCookiesProvider } from "../providers/ServerCookiesProvider.ts";
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Declares a type-safe, configurable HTTP cookie.
|
|
14
|
-
* This
|
|
14
|
+
* This primitive provides methods to get, set, and delete the cookie
|
|
15
15
|
* within the server request/response cycle.
|
|
16
16
|
*/
|
|
17
17
|
export const $cookie = <T extends TSchema>(
|
|
18
|
-
options:
|
|
19
|
-
):
|
|
20
|
-
return
|
|
18
|
+
options: CookiePrimitiveOptions<T>,
|
|
19
|
+
): AbstractCookiePrimitive<T> => {
|
|
20
|
+
return createPrimitive(CookiePrimitive<T>, options);
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
24
24
|
|
|
25
|
-
export interface
|
|
25
|
+
export interface CookiePrimitiveOptions<T extends TSchema> {
|
|
26
26
|
/** The schema for the cookie's value, used for validation and type safety. */
|
|
27
27
|
schema: T;
|
|
28
28
|
|
|
@@ -57,9 +57,9 @@ export interface CookieDescriptorOptions<T extends TSchema> {
|
|
|
57
57
|
sign?: boolean;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
export interface
|
|
60
|
+
export interface AbstractCookiePrimitive<T extends TSchema> {
|
|
61
61
|
readonly name: string;
|
|
62
|
-
readonly options:
|
|
62
|
+
readonly options: CookiePrimitiveOptions<T>;
|
|
63
63
|
set(
|
|
64
64
|
value: Static<T>,
|
|
65
65
|
options?: { cookies?: Cookies; ttl?: DurationLike },
|
|
@@ -68,9 +68,9 @@ export interface AbstractCookieDescriptor<T extends TSchema> {
|
|
|
68
68
|
del(options?: { cookies?: Cookies }): void;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
export class
|
|
72
|
-
extends
|
|
73
|
-
implements
|
|
71
|
+
export class CookiePrimitive<T extends TSchema>
|
|
72
|
+
extends Primitive<CookiePrimitiveOptions<T>>
|
|
73
|
+
implements AbstractCookiePrimitive<T>
|
|
74
74
|
{
|
|
75
75
|
protected readonly serverCookiesProvider = $inject(ServerCookiesProvider);
|
|
76
76
|
|
|
@@ -119,7 +119,7 @@ export class CookieDescriptor<T extends TSchema>
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
$cookie[KIND] =
|
|
122
|
+
$cookie[KIND] = CookiePrimitive;
|
|
123
123
|
|
|
124
124
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
125
125
|
|
|
@@ -21,9 +21,9 @@ import { DEFAULT_APP_SECRET } from "alepha/security";
|
|
|
21
21
|
import type { ServerRequest } from "alepha/server";
|
|
22
22
|
import type {
|
|
23
23
|
Cookie,
|
|
24
|
-
|
|
24
|
+
CookiePrimitiveOptions,
|
|
25
25
|
Cookies,
|
|
26
|
-
} from "../
|
|
26
|
+
} from "../primitives/$cookie.ts";
|
|
27
27
|
import { CookieParser } from "../services/CookieParser.ts";
|
|
28
28
|
|
|
29
29
|
const envSchema = t.object({
|
|
@@ -96,7 +96,7 @@ export class ServerCookiesProvider {
|
|
|
96
96
|
|
|
97
97
|
public getCookie<T extends TSchema>(
|
|
98
98
|
name: string,
|
|
99
|
-
options:
|
|
99
|
+
options: CookiePrimitiveOptions<T>,
|
|
100
100
|
contextCookies?: Cookies,
|
|
101
101
|
): Static<T> | undefined {
|
|
102
102
|
const cookies = this.getCookiesFromContext(contextCookies);
|
|
@@ -145,7 +145,7 @@ export class ServerCookiesProvider {
|
|
|
145
145
|
|
|
146
146
|
public setCookie<T extends TSchema>(
|
|
147
147
|
name: string,
|
|
148
|
-
options:
|
|
148
|
+
options: CookiePrimitiveOptions<T>,
|
|
149
149
|
data: Static<T>,
|
|
150
150
|
contextCookies?: Cookies,
|
|
151
151
|
): void {
|
package/src/server-cors/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $module } from "alepha";
|
|
2
|
-
import { $cors } from "./
|
|
2
|
+
import { $cors } from "./primitives/$cors.ts";
|
|
3
3
|
import {
|
|
4
4
|
type CorsOptions,
|
|
5
5
|
ServerCorsProvider,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
|
|
8
8
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
9
9
|
|
|
10
|
-
export * from "./
|
|
10
|
+
export * from "./primitives/$cors.ts";
|
|
11
11
|
export * from "./providers/ServerCorsProvider.ts";
|
|
12
12
|
|
|
13
13
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -52,6 +52,6 @@ declare module "alepha/server" {
|
|
|
52
52
|
*/
|
|
53
53
|
export const AlephaServerCors = $module({
|
|
54
54
|
name: "alepha.server.cors",
|
|
55
|
-
|
|
55
|
+
primitives: [$cors],
|
|
56
56
|
services: [ServerCorsProvider],
|
|
57
57
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $inject,
|
|
1
|
+
import { $inject, createPrimitive, KIND, Primitive } from "alepha";
|
|
2
2
|
import type { CorsOptions } from "../providers/ServerCorsProvider.ts";
|
|
3
3
|
import { ServerCorsProvider } from "../providers/ServerCorsProvider.ts";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Declares CORS configuration for specific server routes.
|
|
7
|
-
* This
|
|
7
|
+
* This primitive provides path-based CORS configuration.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts
|
|
@@ -18,15 +18,13 @@ import { ServerCorsProvider } from "../providers/ServerCorsProvider.ts";
|
|
|
18
18
|
* }
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
export const $cors = (
|
|
22
|
-
|
|
23
|
-
): AbstractCorsDescriptor => {
|
|
24
|
-
return createDescriptor(CorsDescriptor, options);
|
|
21
|
+
export const $cors = (options: CorsPrimitiveConfig): AbstractCorsPrimitive => {
|
|
22
|
+
return createPrimitive(CorsPrimitive, options);
|
|
25
23
|
};
|
|
26
24
|
|
|
27
25
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
28
26
|
|
|
29
|
-
export interface
|
|
27
|
+
export interface CorsPrimitiveConfig extends Partial<CorsOptions> {
|
|
30
28
|
/** Name identifier for this CORS config (default: property key) */
|
|
31
29
|
name?: string;
|
|
32
30
|
/** Path patterns to match (supports wildcards like /api/*) */
|
|
@@ -35,14 +33,14 @@ export interface CorsDescriptorConfig extends Partial<CorsOptions> {
|
|
|
35
33
|
|
|
36
34
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
37
35
|
|
|
38
|
-
export interface
|
|
36
|
+
export interface AbstractCorsPrimitive {
|
|
39
37
|
readonly name: string;
|
|
40
|
-
readonly options:
|
|
38
|
+
readonly options: CorsPrimitiveConfig;
|
|
41
39
|
}
|
|
42
40
|
|
|
43
|
-
export class
|
|
44
|
-
extends
|
|
45
|
-
implements
|
|
41
|
+
export class CorsPrimitive
|
|
42
|
+
extends Primitive<CorsPrimitiveConfig>
|
|
43
|
+
implements AbstractCorsPrimitive
|
|
46
44
|
{
|
|
47
45
|
protected readonly serverCorsProvider = $inject(ServerCorsProvider);
|
|
48
46
|
|
|
@@ -56,4 +54,4 @@ export class CorsDescriptor
|
|
|
56
54
|
}
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
$cors[KIND] =
|
|
57
|
+
$cors[KIND] = CorsPrimitive;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $atom, $hook, $inject, $use, type Static, t } from "alepha";
|
|
2
2
|
import { $logger } from "alepha/logger";
|
|
3
3
|
import { ServerRouterProvider } from "alepha/server";
|
|
4
|
-
import type {
|
|
4
|
+
import type { CorsPrimitiveConfig } from "../primitives/$cors.ts";
|
|
5
5
|
|
|
6
6
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
7
7
|
|
|
@@ -64,12 +64,12 @@ export class ServerCorsProvider {
|
|
|
64
64
|
/**
|
|
65
65
|
* Registered CORS configurations with their path patterns
|
|
66
66
|
*/
|
|
67
|
-
public readonly registeredConfigs:
|
|
67
|
+
public readonly registeredConfigs: CorsPrimitiveConfig[] = [];
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
|
-
* Register a CORS configuration (called by
|
|
70
|
+
* Register a CORS configuration (called by primitives)
|
|
71
71
|
*/
|
|
72
|
-
public registerCors(config:
|
|
72
|
+
public registerCors(config: CorsPrimitiveConfig): void {
|
|
73
73
|
this.registeredConfigs.push(config);
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -132,7 +132,7 @@ export class ServerCorsProvider {
|
|
|
132
132
|
/**
|
|
133
133
|
* Build complete CORS options by merging with global defaults
|
|
134
134
|
*/
|
|
135
|
-
protected buildCorsOptions(config:
|
|
135
|
+
protected buildCorsOptions(config: CorsPrimitiveConfig): CorsOptions {
|
|
136
136
|
return {
|
|
137
137
|
origin: config.origin ?? this.globalOptions.origin,
|
|
138
138
|
methods: config.methods ?? this.globalOptions.methods,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { $module } from "alepha";
|
|
2
|
-
import { $client } from "./
|
|
3
|
-
import { $remote } from "./
|
|
2
|
+
import { $client } from "./primitives/$client.ts";
|
|
3
|
+
import { $remote } from "./primitives/$remote.ts";
|
|
4
4
|
import { LinkProvider } from "./providers/LinkProvider.ts";
|
|
5
5
|
|
|
6
6
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
7
7
|
|
|
8
|
-
export * from "./
|
|
9
|
-
export * from "./
|
|
8
|
+
export * from "./primitives/$client.ts";
|
|
9
|
+
export * from "./primitives/$remote.ts";
|
|
10
10
|
export * from "./providers/LinkProvider.ts";
|
|
11
11
|
export * from "./schemas/apiLinksResponseSchema.ts";
|
|
12
12
|
|
|
@@ -14,6 +14,6 @@ export * from "./schemas/apiLinksResponseSchema.ts";
|
|
|
14
14
|
|
|
15
15
|
export const AlephaServerLinks = $module({
|
|
16
16
|
name: "alepha.server.links",
|
|
17
|
-
|
|
17
|
+
primitives: [$remote, $client],
|
|
18
18
|
services: [LinkProvider],
|
|
19
19
|
});
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import "alepha/server/security";
|
|
2
2
|
import { $module } from "alepha";
|
|
3
3
|
import { AlephaServer } from "alepha/server";
|
|
4
|
-
import { $client } from "./
|
|
5
|
-
import { $remote } from "./
|
|
4
|
+
import { $client } from "./primitives/$client.ts";
|
|
5
|
+
import { $remote } from "./primitives/$remote.ts";
|
|
6
6
|
import { LinkProvider } from "./providers/LinkProvider.ts";
|
|
7
|
-
import {
|
|
7
|
+
import { RemotePrimitiveProvider } from "./providers/RemotePrimitiveProvider.ts";
|
|
8
8
|
import { ServerLinksProvider } from "./providers/ServerLinksProvider.ts";
|
|
9
9
|
import type { ApiLinksResponse } from "./schemas/apiLinksResponseSchema.ts";
|
|
10
10
|
|
|
11
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
12
12
|
|
|
13
|
-
export * from "./
|
|
14
|
-
export * from "./
|
|
13
|
+
export * from "./primitives/$client.ts";
|
|
14
|
+
export * from "./primitives/$remote.ts";
|
|
15
15
|
export * from "./providers/LinkProvider.ts";
|
|
16
|
-
export * from "./providers/
|
|
16
|
+
export * from "./providers/RemotePrimitiveProvider.ts";
|
|
17
17
|
export * from "./providers/ServerLinksProvider.ts";
|
|
18
18
|
export * from "./schemas/apiLinksResponseSchema.ts";
|
|
19
19
|
|
|
@@ -36,7 +36,7 @@ declare module "alepha" {
|
|
|
36
36
|
/**
|
|
37
37
|
* Provides server-side link management and remote capabilities for client-server interactions.
|
|
38
38
|
*
|
|
39
|
-
* The server-links module enables declarative link definitions using `$remote` and `$client`
|
|
39
|
+
* The server-links module enables declarative link definitions using `$remote` and `$client` primitives,
|
|
40
40
|
* facilitating seamless API endpoint management and client-server communication. It integrates with server
|
|
41
41
|
* security features to ensure safe and controlled access to resources.
|
|
42
42
|
*
|
|
@@ -46,11 +46,11 @@ declare module "alepha" {
|
|
|
46
46
|
*/
|
|
47
47
|
export const AlephaServerLinks = $module({
|
|
48
48
|
name: "alepha.server.links",
|
|
49
|
-
|
|
49
|
+
primitives: [$remote, $client],
|
|
50
50
|
services: [
|
|
51
51
|
AlephaServer,
|
|
52
52
|
ServerLinksProvider,
|
|
53
|
-
|
|
53
|
+
RemotePrimitiveProvider,
|
|
54
54
|
LinkProvider,
|
|
55
55
|
],
|
|
56
56
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import { createPrimitive, KIND, Primitive } from "alepha";
|
|
2
|
+
import type { ServiceAccountPrimitive } from "alepha/security";
|
|
3
|
+
import type { ProxyPrimitiveOptions } from "alepha/server/proxy";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* $remote is a
|
|
6
|
+
* $remote is a primitive that allows you to define remote service access.
|
|
7
7
|
*
|
|
8
8
|
* Use it only when you have 2 or more services that need to communicate with each other.
|
|
9
9
|
*
|
|
@@ -11,11 +11,11 @@ import type { ProxyDescriptorOptions } from "alepha/server/proxy";
|
|
|
11
11
|
*
|
|
12
12
|
* You can add a service account if you want to use a security layer.
|
|
13
13
|
*/
|
|
14
|
-
export const $remote = (options:
|
|
15
|
-
return
|
|
14
|
+
export const $remote = (options: RemotePrimitiveOptions) => {
|
|
15
|
+
return createPrimitive(RemotePrimitive, options);
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
export interface
|
|
18
|
+
export interface RemotePrimitiveOptions {
|
|
19
19
|
/**
|
|
20
20
|
* The URL of the remote service.
|
|
21
21
|
* You can use a function to generate the URL dynamically.
|
|
@@ -52,7 +52,7 @@ export interface RemoteDescriptorOptions {
|
|
|
52
52
|
proxy?:
|
|
53
53
|
| boolean
|
|
54
54
|
| Partial<
|
|
55
|
-
|
|
55
|
+
ProxyPrimitiveOptions & {
|
|
56
56
|
/**
|
|
57
57
|
* If true, the remote service won't be available internally, only through the proxy.
|
|
58
58
|
*/
|
|
@@ -64,13 +64,13 @@ export interface RemoteDescriptorOptions {
|
|
|
64
64
|
* For communication between the server and the remote service with a security layer.
|
|
65
65
|
* This will be used for internal communication and will not be exposed to the client.
|
|
66
66
|
*/
|
|
67
|
-
serviceAccount?:
|
|
67
|
+
serviceAccount?: ServiceAccountPrimitive;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
export class
|
|
70
|
+
export class RemotePrimitive extends Primitive<RemotePrimitiveOptions> {
|
|
71
71
|
public get name(): string {
|
|
72
72
|
return this.options.name ?? this.config.propertyKey;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
$remote[KIND] =
|
|
76
|
+
$remote[KIND] = RemotePrimitive;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $inject, Alepha, AlephaError, type Async, t } from "alepha";
|
|
2
2
|
import { $logger } from "alepha/logger";
|
|
3
3
|
import {
|
|
4
|
-
type
|
|
4
|
+
type ActionPrimitive,
|
|
5
5
|
type ClientRequestEntry,
|
|
6
6
|
type ClientRequestOptions,
|
|
7
7
|
type ClientRequestResponse,
|
|
@@ -79,7 +79,7 @@ export class LinkProvider {
|
|
|
79
79
|
|
|
80
80
|
public get links(): HttpClientLink[] {
|
|
81
81
|
// TODO: not performant at all, use a map instead for ServerLinks
|
|
82
|
-
const apiLinks = this.alepha.
|
|
82
|
+
const apiLinks = this.alepha.store.get(
|
|
83
83
|
"alepha.server.request.apiLinks",
|
|
84
84
|
)?.links;
|
|
85
85
|
if (apiLinks) {
|
|
@@ -114,7 +114,7 @@ export class LinkProvider {
|
|
|
114
114
|
},
|
|
115
115
|
);
|
|
116
116
|
|
|
117
|
-
this.alepha.
|
|
117
|
+
this.alepha.store.set("alepha.server.request.apiLinks", data);
|
|
118
118
|
|
|
119
119
|
return data.links;
|
|
120
120
|
}
|
|
@@ -277,7 +277,7 @@ export class LinkProvider {
|
|
|
277
277
|
): Promise<HttpClientLink> {
|
|
278
278
|
if (
|
|
279
279
|
this.alepha.isBrowser() &&
|
|
280
|
-
!this.alepha.
|
|
280
|
+
!this.alepha.store.get("alepha.server.request.apiLinks")
|
|
281
281
|
) {
|
|
282
282
|
await this.fetchLinks();
|
|
283
283
|
}
|
|
@@ -334,15 +334,15 @@ export interface ClientScope {
|
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
export type HttpVirtualClient<T> = {
|
|
337
|
-
[K in keyof T as T[K] extends
|
|
337
|
+
[K in keyof T as T[K] extends ActionPrimitive<RequestConfigSchema>
|
|
338
338
|
? K
|
|
339
|
-
: never]: T[K] extends
|
|
339
|
+
: never]: T[K] extends ActionPrimitive<infer Schema>
|
|
340
340
|
? VirtualAction<Schema>
|
|
341
341
|
: never;
|
|
342
342
|
};
|
|
343
343
|
|
|
344
344
|
export interface VirtualAction<T extends RequestConfigSchema>
|
|
345
|
-
extends Pick<
|
|
345
|
+
extends Pick<ActionPrimitive<T>, "name" | "run" | "fetch"> {
|
|
346
346
|
(
|
|
347
347
|
config?: ClientRequestEntry<T>,
|
|
348
348
|
opts?: ClientRequestOptions,
|
package/src/server-links/providers/{RemoteDescriptorProvider.ts → RemotePrimitiveProvider.ts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { $env, $hook, $inject, Alepha, t } from "alepha";
|
|
2
2
|
import { $logger } from "alepha/logger";
|
|
3
3
|
import { $retry } from "alepha/retry";
|
|
4
|
-
import type {
|
|
4
|
+
import type { ServiceAccountPrimitive } from "alepha/security";
|
|
5
5
|
import { ServerProxyProvider } from "alepha/server/proxy";
|
|
6
|
-
import { $remote, type
|
|
6
|
+
import { $remote, type RemotePrimitive } from "../primitives/$remote.ts";
|
|
7
7
|
import {
|
|
8
8
|
type ApiLinksResponse,
|
|
9
9
|
apiLinksResponseSchema,
|
|
@@ -17,7 +17,7 @@ const envSchema = t.object({
|
|
|
17
17
|
}),
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
export class
|
|
20
|
+
export class RemotePrimitiveProvider {
|
|
21
21
|
protected readonly env = $env(envSchema);
|
|
22
22
|
protected readonly alepha = $inject(Alepha);
|
|
23
23
|
protected readonly proxyProvider = $inject(ServerProxyProvider);
|
|
@@ -32,7 +32,7 @@ export class RemoteDescriptorProvider {
|
|
|
32
32
|
public readonly configure = $hook({
|
|
33
33
|
on: "configure",
|
|
34
34
|
handler: async () => {
|
|
35
|
-
const remotes = this.alepha.
|
|
35
|
+
const remotes = this.alepha.primitives($remote);
|
|
36
36
|
for (const remote of remotes) {
|
|
37
37
|
await this.registerRemote(remote);
|
|
38
38
|
}
|
|
@@ -78,7 +78,7 @@ export class RemoteDescriptorProvider {
|
|
|
78
78
|
},
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
public async registerRemote(value:
|
|
81
|
+
public async registerRemote(value: RemotePrimitive): Promise<void> {
|
|
82
82
|
const options = value.options;
|
|
83
83
|
const url = typeof options.url === "string" ? options.url : options.url();
|
|
84
84
|
const linkPath = LinkProvider.path.apiLinks;
|
|
@@ -225,7 +225,7 @@ export interface ServerRemote {
|
|
|
225
225
|
/**
|
|
226
226
|
* Force a default access token provider when not provided.
|
|
227
227
|
*/
|
|
228
|
-
serviceAccount?:
|
|
228
|
+
serviceAccount?: ServiceAccountPrimitive;
|
|
229
229
|
|
|
230
230
|
/**
|
|
231
231
|
* Prefix for the remote service links.
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
apiLinksResponseSchema,
|
|
19
19
|
} from "../schemas/apiLinksResponseSchema.ts";
|
|
20
20
|
import { LinkProvider } from "./LinkProvider.ts";
|
|
21
|
-
import {
|
|
21
|
+
import { RemotePrimitiveProvider } from "./RemotePrimitiveProvider.ts";
|
|
22
22
|
|
|
23
23
|
const envSchema = t.object({
|
|
24
24
|
SERVER_API_PREFIX: t.text({
|
|
@@ -31,7 +31,7 @@ export class ServerLinksProvider {
|
|
|
31
31
|
protected readonly env = $env(envSchema);
|
|
32
32
|
protected readonly alepha = $inject(Alepha);
|
|
33
33
|
protected readonly linkProvider = $inject(LinkProvider);
|
|
34
|
-
protected readonly remoteProvider = $inject(
|
|
34
|
+
protected readonly remoteProvider = $inject(RemotePrimitiveProvider);
|
|
35
35
|
protected readonly serverTimingProvider = $inject(ServerTimingProvider);
|
|
36
36
|
|
|
37
37
|
public get prefix() {
|
|
@@ -42,7 +42,7 @@ export class ServerLinksProvider {
|
|
|
42
42
|
on: "configure",
|
|
43
43
|
handler: () => {
|
|
44
44
|
// convert all $action to local links
|
|
45
|
-
for (const action of this.alepha.
|
|
45
|
+
for (const action of this.alepha.primitives($action)) {
|
|
46
46
|
this.linkProvider.registerLink({
|
|
47
47
|
name: action.name,
|
|
48
48
|
group: action.group,
|