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,140 +0,0 @@
|
|
|
1
|
-
import * as alepha1 from "alepha";
|
|
2
|
-
import { Descriptor, KIND, Static } from "alepha";
|
|
3
|
-
import * as alepha_logger0 from "alepha/logger";
|
|
4
|
-
import { ServerRouterProvider } from "alepha/server";
|
|
5
|
-
|
|
6
|
-
//#region src/server-cors/descriptors/$cors.d.ts
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Declares CORS configuration for specific server routes.
|
|
10
|
-
* This descriptor provides path-based CORS configuration.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* class ApiService {
|
|
15
|
-
* // Apply specific CORS to API routes
|
|
16
|
-
* cors = $cors({
|
|
17
|
-
* paths: ["/api/*"],
|
|
18
|
-
* origin: "https://app.example.com",
|
|
19
|
-
* credentials: true,
|
|
20
|
-
* });
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
declare const $cors: {
|
|
25
|
-
(options: CorsDescriptorConfig): AbstractCorsDescriptor;
|
|
26
|
-
[KIND]: typeof CorsDescriptor;
|
|
27
|
-
};
|
|
28
|
-
interface CorsDescriptorConfig extends Partial<CorsOptions> {
|
|
29
|
-
/** Name identifier for this CORS config (default: property key) */
|
|
30
|
-
name?: string;
|
|
31
|
-
/** Path patterns to match (supports wildcards like /api/*) */
|
|
32
|
-
paths?: string[];
|
|
33
|
-
}
|
|
34
|
-
interface AbstractCorsDescriptor {
|
|
35
|
-
readonly name: string;
|
|
36
|
-
readonly options: CorsDescriptorConfig;
|
|
37
|
-
}
|
|
38
|
-
declare class CorsDescriptor extends Descriptor<CorsDescriptorConfig> implements AbstractCorsDescriptor {
|
|
39
|
-
protected readonly serverCorsProvider: ServerCorsProvider;
|
|
40
|
-
get name(): string;
|
|
41
|
-
protected onInit(): void;
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
//#region src/server-cors/providers/ServerCorsProvider.d.ts
|
|
45
|
-
/**
|
|
46
|
-
* CORS configuration atom (global defaults)
|
|
47
|
-
*/
|
|
48
|
-
declare const corsOptions: alepha1.Atom<alepha1.TObject<{
|
|
49
|
-
origin: alepha1.TOptional<alepha1.TString>;
|
|
50
|
-
methods: alepha1.TArray<alepha1.TString>;
|
|
51
|
-
headers: alepha1.TArray<alepha1.TString>;
|
|
52
|
-
credentials: alepha1.TOptional<alepha1.TBoolean>;
|
|
53
|
-
maxAge: alepha1.TOptional<alepha1.TNumber>;
|
|
54
|
-
}>, "alepha.server.cors.options">;
|
|
55
|
-
type CorsOptions = Static<typeof corsOptions.schema>;
|
|
56
|
-
declare module "alepha" {
|
|
57
|
-
interface State {
|
|
58
|
-
[corsOptions.key]: CorsOptions;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
declare class ServerCorsProvider {
|
|
62
|
-
protected readonly log: alepha_logger0.Logger;
|
|
63
|
-
protected readonly serverRouterProvider: ServerRouterProvider;
|
|
64
|
-
protected readonly globalOptions: Readonly<{
|
|
65
|
-
origin?: string | undefined;
|
|
66
|
-
credentials?: boolean | undefined;
|
|
67
|
-
maxAge?: number | undefined;
|
|
68
|
-
methods: string[];
|
|
69
|
-
headers: string[];
|
|
70
|
-
}>;
|
|
71
|
-
/**
|
|
72
|
-
* Registered CORS configurations with their path patterns
|
|
73
|
-
*/
|
|
74
|
-
readonly registeredConfigs: CorsDescriptorConfig[];
|
|
75
|
-
/**
|
|
76
|
-
* Register a CORS configuration (called by descriptors)
|
|
77
|
-
*/
|
|
78
|
-
registerCors(config: CorsDescriptorConfig): void;
|
|
79
|
-
protected readonly onStart: alepha1.HookDescriptor<"start">;
|
|
80
|
-
protected readonly configure: alepha1.HookDescriptor<"configure">;
|
|
81
|
-
protected readonly onRequest: alepha1.HookDescriptor<"server:onRequest">;
|
|
82
|
-
/**
|
|
83
|
-
* Build complete CORS options by merging with global defaults
|
|
84
|
-
*/
|
|
85
|
-
protected buildCorsOptions(config: CorsDescriptorConfig): CorsOptions;
|
|
86
|
-
/**
|
|
87
|
-
* Apply CORS headers to the response
|
|
88
|
-
*/
|
|
89
|
-
protected applyCorsHeaders(request: {
|
|
90
|
-
headers: {
|
|
91
|
-
origin?: string;
|
|
92
|
-
};
|
|
93
|
-
reply: {
|
|
94
|
-
setHeader: (name: string, value: string) => void;
|
|
95
|
-
};
|
|
96
|
-
}, options: CorsOptions): void;
|
|
97
|
-
isOriginAllowed(origin: string | undefined, allowed: CorsOptions["origin"]): boolean;
|
|
98
|
-
}
|
|
99
|
-
type ServerCorsProviderOptions = CorsOptions;
|
|
100
|
-
//#endregion
|
|
101
|
-
//#region src/server-cors/index.d.ts
|
|
102
|
-
declare module "alepha/server" {
|
|
103
|
-
interface ServerRoute {
|
|
104
|
-
/**
|
|
105
|
-
* Route-specific CORS configuration.
|
|
106
|
-
* If set, overrides the global CORS options for this route.
|
|
107
|
-
*/
|
|
108
|
-
cors?: CorsOptions;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Plugin for configuring CORS on the Alepha server.
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```ts
|
|
116
|
-
* import { Alepha, $route } from "alepha";
|
|
117
|
-
* import { AlephaServerCors, $cors } from "alepha/server-cors";
|
|
118
|
-
*
|
|
119
|
-
* class ApiService {
|
|
120
|
-
* // Global CORS is applied via corsOptions atom
|
|
121
|
-
*
|
|
122
|
-
* // Path-specific CORS for API routes
|
|
123
|
-
* apiCors = $cors({
|
|
124
|
-
* paths: ["/api/*"],
|
|
125
|
-
* origin: "https://app.example.com",
|
|
126
|
-
* credentials: true,
|
|
127
|
-
* });
|
|
128
|
-
*
|
|
129
|
-
* route = $route({
|
|
130
|
-
* path: "/api/data",
|
|
131
|
-
* method: "POST",
|
|
132
|
-
* handler: () => ({ data: "hello" }),
|
|
133
|
-
* });
|
|
134
|
-
* }
|
|
135
|
-
* ```
|
|
136
|
-
*/
|
|
137
|
-
declare const AlephaServerCors: alepha1.Service<alepha1.Module>;
|
|
138
|
-
//#endregion
|
|
139
|
-
export { $cors, AbstractCorsDescriptor, AlephaServerCors, CorsDescriptor, CorsDescriptorConfig, CorsOptions, ServerCorsProvider, ServerCorsProviderOptions, corsOptions };
|
|
140
|
-
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
let alepha = require("alepha");
|
|
2
|
-
let alepha_server = require("alepha/server");
|
|
3
|
-
let alepha_datetime = require("alepha/datetime");
|
|
4
|
-
|
|
5
|
-
//#region src/server-health/schemas/healthSchema.ts
|
|
6
|
-
const healthSchema = alepha.t.object({
|
|
7
|
-
message: alepha.t.text(),
|
|
8
|
-
uptime: alepha.t.number(),
|
|
9
|
-
date: alepha.t.datetime(),
|
|
10
|
-
ready: alepha.t.boolean()
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/server-health/providers/ServerHealthProvider.ts
|
|
15
|
-
/**
|
|
16
|
-
* Register `/health` & `/healthz` endpoint.
|
|
17
|
-
*
|
|
18
|
-
* - Provides basic health information about the server.
|
|
19
|
-
*/
|
|
20
|
-
var ServerHealthProvider = class {
|
|
21
|
-
time = (0, alepha.$inject)(alepha_datetime.DateTimeProvider);
|
|
22
|
-
alepha = (0, alepha.$inject)(alepha.Alepha);
|
|
23
|
-
health = (0, alepha_server.$route)({
|
|
24
|
-
path: "/health",
|
|
25
|
-
schema: { response: healthSchema },
|
|
26
|
-
silent: true,
|
|
27
|
-
handler: () => this.healthCheck()
|
|
28
|
-
});
|
|
29
|
-
healthz = (0, alepha_server.$route)({
|
|
30
|
-
path: "/healthz",
|
|
31
|
-
schema: { response: healthSchema },
|
|
32
|
-
silent: true,
|
|
33
|
-
handler: () => this.healthCheck()
|
|
34
|
-
});
|
|
35
|
-
healthCheck() {
|
|
36
|
-
return {
|
|
37
|
-
message: "OK",
|
|
38
|
-
uptime: Math.floor(process.uptime()),
|
|
39
|
-
date: this.time.nowISOString(),
|
|
40
|
-
ready: this.alepha.isReady()
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
//#endregion
|
|
46
|
-
//#region src/server-health/index.ts
|
|
47
|
-
/**
|
|
48
|
-
* Plugin for Alepha Server that provides health-check endpoints.
|
|
49
|
-
*
|
|
50
|
-
* @see {@link ServerHealthProvider}
|
|
51
|
-
* @module alepha.server.health
|
|
52
|
-
*/
|
|
53
|
-
const AlephaServerHealth = (0, alepha.$module)({
|
|
54
|
-
name: "alepha.server.health",
|
|
55
|
-
services: [alepha_server.AlephaServer, ServerHealthProvider]
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
//#endregion
|
|
59
|
-
exports.AlephaServerHealth = AlephaServerHealth;
|
|
60
|
-
exports.ServerHealthProvider = ServerHealthProvider;
|
|
61
|
-
exports.healthSchema = healthSchema;
|
|
62
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["t","DateTimeProvider","Alepha","AlephaServer"],"sources":["../../src/server-health/schemas/healthSchema.ts","../../src/server-health/providers/ServerHealthProvider.ts","../../src/server-health/index.ts"],"sourcesContent":["import { t } from \"alepha\";\n\nexport const healthSchema = t.object({\n message: t.text(),\n uptime: t.number(),\n date: t.datetime(),\n ready: t.boolean(),\n});\n","import { $inject, Alepha } from \"alepha\";\nimport { DateTimeProvider } from \"alepha/datetime\";\nimport { $route } from \"alepha/server\";\nimport { healthSchema } from \"../schemas/healthSchema.ts\";\n\n/**\n * Register `/health` & `/healthz` endpoint.\n *\n * - Provides basic health information about the server.\n */\nexport class ServerHealthProvider {\n protected readonly time: DateTimeProvider = $inject(DateTimeProvider);\n protected readonly alepha = $inject(Alepha);\n\n public readonly health = $route({\n path: \"/health\",\n schema: {\n response: healthSchema,\n },\n silent: true,\n handler: () => this.healthCheck(),\n });\n\n public readonly healthz = $route({\n path: \"/healthz\",\n schema: {\n response: healthSchema,\n },\n silent: true,\n handler: () => this.healthCheck(),\n });\n\n protected healthCheck() {\n return {\n message: \"OK\",\n uptime: Math.floor(process.uptime()),\n date: this.time.nowISOString(),\n ready: this.alepha.isReady(),\n };\n }\n}\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerHealthProvider } from \"./providers/ServerHealthProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./providers/ServerHealthProvider.ts\";\nexport * from \"./schemas/healthSchema.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Plugin for Alepha Server that provides health-check endpoints.\n *\n * @see {@link ServerHealthProvider}\n * @module alepha.server.health\n */\nexport const AlephaServerHealth = $module({\n name: \"alepha.server.health\",\n services: [AlephaServer, ServerHealthProvider],\n});\n"],"mappings":";;;;;AAEA,MAAa,eAAeA,SAAE,OAAO;CACnC,SAASA,SAAE,MAAM;CACjB,QAAQA,SAAE,QAAQ;CAClB,MAAMA,SAAE,UAAU;CAClB,OAAOA,SAAE,SAAS;CACnB,CAAC;;;;;;;;;ACGF,IAAa,uBAAb,MAAkC;CAChC,AAAmB,2BAAiCC,iCAAiB;CACrE,AAAmB,6BAAiBC,cAAO;CAE3C,AAAgB,mCAAgB;EAC9B,MAAM;EACN,QAAQ,EACN,UAAU,cACX;EACD,QAAQ;EACR,eAAe,KAAK,aAAa;EAClC,CAAC;CAEF,AAAgB,oCAAiB;EAC/B,MAAM;EACN,QAAQ,EACN,UAAU,cACX;EACD,QAAQ;EACR,eAAe,KAAK,aAAa;EAClC,CAAC;CAEF,AAAU,cAAc;AACtB,SAAO;GACL,SAAS;GACT,QAAQ,KAAK,MAAM,QAAQ,QAAQ,CAAC;GACpC,MAAM,KAAK,KAAK,cAAc;GAC9B,OAAO,KAAK,OAAO,SAAS;GAC7B;;;;;;;;;;;;ACrBL,MAAa,yCAA6B;CACxC,MAAM;CACN,UAAU,CAACC,4BAAc,qBAAqB;CAC/C,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import * as alepha6 from "alepha";
|
|
2
|
-
import { Alepha } from "alepha";
|
|
3
|
-
import * as alepha_server0 from "alepha/server";
|
|
4
|
-
import { DateTimeProvider } from "alepha/datetime";
|
|
5
|
-
|
|
6
|
-
//#region src/server-health/providers/ServerHealthProvider.d.ts
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Register `/health` & `/healthz` endpoint.
|
|
10
|
-
*
|
|
11
|
-
* - Provides basic health information about the server.
|
|
12
|
-
*/
|
|
13
|
-
declare class ServerHealthProvider {
|
|
14
|
-
protected readonly time: DateTimeProvider;
|
|
15
|
-
protected readonly alepha: Alepha;
|
|
16
|
-
readonly health: alepha_server0.RouteDescriptor<{
|
|
17
|
-
response: alepha6.TObject<{
|
|
18
|
-
message: alepha6.TString;
|
|
19
|
-
uptime: alepha6.TNumber;
|
|
20
|
-
date: alepha6.TString;
|
|
21
|
-
ready: alepha6.TBoolean;
|
|
22
|
-
}>;
|
|
23
|
-
}>;
|
|
24
|
-
readonly healthz: alepha_server0.RouteDescriptor<{
|
|
25
|
-
response: alepha6.TObject<{
|
|
26
|
-
message: alepha6.TString;
|
|
27
|
-
uptime: alepha6.TNumber;
|
|
28
|
-
date: alepha6.TString;
|
|
29
|
-
ready: alepha6.TBoolean;
|
|
30
|
-
}>;
|
|
31
|
-
}>;
|
|
32
|
-
protected healthCheck(): {
|
|
33
|
-
message: string;
|
|
34
|
-
uptime: number;
|
|
35
|
-
date: string;
|
|
36
|
-
ready: boolean;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//#endregion
|
|
40
|
-
//#region src/server-health/schemas/healthSchema.d.ts
|
|
41
|
-
declare const healthSchema: alepha6.TObject<{
|
|
42
|
-
message: alepha6.TString;
|
|
43
|
-
uptime: alepha6.TNumber;
|
|
44
|
-
date: alepha6.TString;
|
|
45
|
-
ready: alepha6.TBoolean;
|
|
46
|
-
}>;
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/server-health/index.d.ts
|
|
49
|
-
/**
|
|
50
|
-
* Plugin for Alepha Server that provides health-check endpoints.
|
|
51
|
-
*
|
|
52
|
-
* @see {@link ServerHealthProvider}
|
|
53
|
-
* @module alepha.server.health
|
|
54
|
-
*/
|
|
55
|
-
declare const AlephaServerHealth: alepha6.Service<alepha6.Module>;
|
|
56
|
-
//#endregion
|
|
57
|
-
export { AlephaServerHealth, ServerHealthProvider, healthSchema };
|
|
58
|
-
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
let alepha = require("alepha");
|
|
2
|
-
let alepha_server = require("alepha/server");
|
|
3
|
-
|
|
4
|
-
//#region src/server-helmet/providers/ServerHelmetProvider.ts
|
|
5
|
-
/**
|
|
6
|
-
* Helmet security headers configuration atom
|
|
7
|
-
*/
|
|
8
|
-
const helmetOptions = (0, alepha.$atom)({
|
|
9
|
-
name: "alepha.server.helmet.options",
|
|
10
|
-
schema: alepha.t.object({
|
|
11
|
-
isSecure: alepha.t.optional(alepha.t.boolean()),
|
|
12
|
-
strictTransportSecurity: alepha.t.optional(alepha.t.object({
|
|
13
|
-
maxAge: alepha.t.optional(alepha.t.number()),
|
|
14
|
-
includeSubDomains: alepha.t.optional(alepha.t.boolean()),
|
|
15
|
-
preload: alepha.t.optional(alepha.t.boolean())
|
|
16
|
-
})),
|
|
17
|
-
xContentTypeOptions: alepha.t.optional(alepha.t.boolean()),
|
|
18
|
-
xFrameOptions: alepha.t.optional(alepha.t.enum(["DENY", "SAMEORIGIN"])),
|
|
19
|
-
xXssProtection: alepha.t.optional(alepha.t.boolean()),
|
|
20
|
-
contentSecurityPolicy: alepha.t.optional(alepha.t.object({ directives: alepha.t.record(alepha.t.string(), alepha.t.any()) })),
|
|
21
|
-
referrerPolicy: alepha.t.optional(alepha.t.enum([
|
|
22
|
-
"no-referrer",
|
|
23
|
-
"no-referrer-when-downgrade",
|
|
24
|
-
"origin",
|
|
25
|
-
"origin-when-cross-origin",
|
|
26
|
-
"same-origin",
|
|
27
|
-
"strict-origin",
|
|
28
|
-
"strict-origin-when-cross-origin",
|
|
29
|
-
"unsafe-url"
|
|
30
|
-
]))
|
|
31
|
-
}),
|
|
32
|
-
default: {
|
|
33
|
-
strictTransportSecurity: {
|
|
34
|
-
maxAge: 15552e3,
|
|
35
|
-
includeSubDomains: true
|
|
36
|
-
},
|
|
37
|
-
xFrameOptions: "SAMEORIGIN",
|
|
38
|
-
xXssProtection: false,
|
|
39
|
-
referrerPolicy: "strict-origin-when-cross-origin"
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
/**
|
|
43
|
-
* Provides a configurable way to apply essential HTTP security headers
|
|
44
|
-
* to every server response, without external dependencies.
|
|
45
|
-
*/
|
|
46
|
-
var ServerHelmetProvider = class {
|
|
47
|
-
alepha = (0, alepha.$inject)(alepha.Alepha);
|
|
48
|
-
/**
|
|
49
|
-
* The configuration options loaded from the atom.
|
|
50
|
-
*/
|
|
51
|
-
options = (0, alepha.$use)(helmetOptions);
|
|
52
|
-
defaultCspDirectives() {
|
|
53
|
-
return {
|
|
54
|
-
"default-src": ["'self'"],
|
|
55
|
-
"base-uri": ["'self'"],
|
|
56
|
-
"font-src": [
|
|
57
|
-
"'self'",
|
|
58
|
-
"https:",
|
|
59
|
-
"data:"
|
|
60
|
-
],
|
|
61
|
-
"form-action": ["'self'"],
|
|
62
|
-
"frame-ancestors": ["'self'"],
|
|
63
|
-
"img-src": ["'self'", "data:"],
|
|
64
|
-
"object-src": ["'none'"],
|
|
65
|
-
"script-src": ["'self'"],
|
|
66
|
-
"script-src-attr": ["'none'"],
|
|
67
|
-
"style-src": [
|
|
68
|
-
"'self'",
|
|
69
|
-
"https:",
|
|
70
|
-
"'unsafe-inline'"
|
|
71
|
-
],
|
|
72
|
-
"upgrade-insecure-requests": []
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
buildHeaders() {
|
|
76
|
-
const headers = {};
|
|
77
|
-
const { strictTransportSecurity: hsts, xContentTypeOptions, xFrameOptions, xXssProtection, contentSecurityPolicy: csp, referrerPolicy } = this.options;
|
|
78
|
-
if (hsts) {
|
|
79
|
-
let value = `max-age=${hsts.maxAge ?? 15552e3}`;
|
|
80
|
-
if (hsts.includeSubDomains) value += "; includeSubDomains";
|
|
81
|
-
if (hsts.preload) value += "; preload";
|
|
82
|
-
headers["strict-transport-security"] = value;
|
|
83
|
-
}
|
|
84
|
-
if (xContentTypeOptions !== false) headers["x-content-type-options"] = "nosniff";
|
|
85
|
-
if (xFrameOptions) headers["x-frame-options"] = xFrameOptions;
|
|
86
|
-
if (xXssProtection !== false) headers["x-xss-protection"] = "1; mode=block";
|
|
87
|
-
if (referrerPolicy) headers["referrer-policy"] = referrerPolicy;
|
|
88
|
-
if (csp) {
|
|
89
|
-
const directives = Object.keys(csp).length === 0 ? this.defaultCspDirectives() : csp.directives;
|
|
90
|
-
headers["content-security-policy"] = Object.entries(directives).map(([key, value]) => {
|
|
91
|
-
const kebabKey = key.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
92
|
-
if (Array.isArray(value)) return `${kebabKey} ${value.join(" ")}`;
|
|
93
|
-
if (typeof value === "boolean" && value) return kebabKey;
|
|
94
|
-
return `${kebabKey} ${value}`;
|
|
95
|
-
}).join("; ");
|
|
96
|
-
}
|
|
97
|
-
return headers;
|
|
98
|
-
}
|
|
99
|
-
onResponse = (0, alepha.$hook)({
|
|
100
|
-
on: "server:onResponse",
|
|
101
|
-
priority: "first",
|
|
102
|
-
handler: ({ response }) => {
|
|
103
|
-
const isSecure = response.headers["x-forwarded-proto"] === "https" || this.options.isSecure || this.alepha.isProduction();
|
|
104
|
-
const headersToSet = this.buildHeaders();
|
|
105
|
-
for (const [key, value] of Object.entries(headersToSet)) {
|
|
106
|
-
if (key === "strict-transport-security" && !isSecure) continue;
|
|
107
|
-
if (!response.headers[key]) response.headers[key] = value;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
//#endregion
|
|
114
|
-
//#region src/server-helmet/index.ts
|
|
115
|
-
/**
|
|
116
|
-
* Automatically adds important HTTP security headers to every response
|
|
117
|
-
* to help protect your application from common web vulnerabilities.
|
|
118
|
-
*
|
|
119
|
-
* @see {@link ServerHelmetProvider}
|
|
120
|
-
* @module alepha.server.helmet
|
|
121
|
-
*/
|
|
122
|
-
const AlephaServerHelmet = (0, alepha.$module)({
|
|
123
|
-
name: "alepha.server.helmet",
|
|
124
|
-
services: [alepha_server.AlephaServer, ServerHelmetProvider]
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
//#endregion
|
|
128
|
-
exports.AlephaServerHelmet = AlephaServerHelmet;
|
|
129
|
-
exports.ServerHelmetProvider = ServerHelmetProvider;
|
|
130
|
-
exports.helmetOptions = helmetOptions;
|
|
131
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["t","Alepha","headers: Record<string, string>","AlephaServer"],"sources":["../../src/server-helmet/providers/ServerHelmetProvider.ts","../../src/server-helmet/index.ts"],"sourcesContent":["import { $atom, $hook, $inject, $use, Alepha, type Static, t } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Helmet security headers configuration atom\n */\nexport const helmetOptions = $atom({\n name: \"alepha.server.helmet.options\",\n schema: t.object({\n isSecure: t.optional(t.boolean()),\n strictTransportSecurity: t.optional(\n t.object({\n maxAge: t.optional(t.number()),\n includeSubDomains: t.optional(t.boolean()),\n preload: t.optional(t.boolean()),\n }),\n ),\n xContentTypeOptions: t.optional(t.boolean()),\n xFrameOptions: t.optional(t.enum([\"DENY\", \"SAMEORIGIN\"])),\n xXssProtection: t.optional(t.boolean()),\n contentSecurityPolicy: t.optional(\n t.object({\n directives: t.record(t.string(), t.any()),\n }),\n ),\n referrerPolicy: t.optional(\n t.enum([\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"origin\",\n \"origin-when-cross-origin\",\n \"same-origin\",\n \"strict-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\",\n ]),\n ),\n }),\n default: {\n strictTransportSecurity: { maxAge: 15552000, includeSubDomains: true },\n xFrameOptions: \"SAMEORIGIN\",\n xXssProtection: false,\n referrerPolicy: \"strict-origin-when-cross-origin\",\n },\n});\n\nexport type HelmetOptions = Static<typeof helmetOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [helmetOptions.key]: HelmetOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ntype CspDirective = string | string[];\n\nexport interface CspDirectives {\n \"default-src\"?: CspDirective;\n \"script-src\"?: CspDirective;\n \"style-src\"?: CspDirective;\n \"img-src\"?: CspDirective;\n \"connect-src\"?: CspDirective;\n \"font-src\"?: CspDirective;\n \"object-src\"?: CspDirective;\n \"media-src\"?: CspDirective;\n \"frame-src\"?: CspDirective;\n sandbox?: CspDirective | boolean;\n \"report-uri\"?: string;\n \"child-src\"?: CspDirective;\n \"form-action\"?: CspDirective;\n \"frame-ancestors\"?: CspDirective;\n \"plugin-types\"?: CspDirective;\n \"base-uri\"?: CspDirective;\n [key: string]: CspDirective | undefined | boolean;\n}\n\nexport interface CspOptions {\n directives: CspDirectives;\n}\n\nexport interface HstsOptions {\n maxAge?: number;\n includeSubDomains?: boolean;\n preload?: boolean;\n}\n\n/**\n * Provides a configurable way to apply essential HTTP security headers\n * to every server response, without external dependencies.\n */\nexport class ServerHelmetProvider {\n protected readonly alepha = $inject(Alepha);\n\n /**\n * The configuration options loaded from the atom.\n */\n protected readonly options = $use(helmetOptions);\n\n protected defaultCspDirectives(): CspDirectives {\n return {\n \"default-src\": [\"'self'\"],\n \"base-uri\": [\"'self'\"],\n \"font-src\": [\"'self'\", \"https:\", \"data:\"],\n \"form-action\": [\"'self'\"],\n \"frame-ancestors\": [\"'self'\"],\n \"img-src\": [\"'self'\", \"data:\"],\n \"object-src\": [\"'none'\"],\n \"script-src\": [\"'self'\"],\n \"script-src-attr\": [\"'none'\"],\n \"style-src\": [\"'self'\", \"https:\", \"'unsafe-inline'\"],\n \"upgrade-insecure-requests\": [],\n };\n }\n\n protected buildHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n const {\n strictTransportSecurity: hsts,\n xContentTypeOptions,\n xFrameOptions,\n xXssProtection,\n contentSecurityPolicy: csp,\n referrerPolicy,\n } = this.options;\n\n // Strict-Transport-Security\n if (hsts) {\n let value = `max-age=${hsts.maxAge ?? 15552000}`;\n if (hsts.includeSubDomains) value += \"; includeSubDomains\";\n if (hsts.preload) value += \"; preload\";\n headers[\"strict-transport-security\"] = value;\n }\n\n // X-Content-Type-Options\n if (xContentTypeOptions !== false) {\n headers[\"x-content-type-options\"] = \"nosniff\";\n }\n\n // X-Frame-Options\n if (xFrameOptions) {\n headers[\"x-frame-options\"] = xFrameOptions;\n }\n\n // X-XSS-Protection\n if (xXssProtection !== false) {\n headers[\"x-xss-protection\"] = \"1; mode=block\";\n }\n\n // Referrer-Policy\n if (referrerPolicy) {\n headers[\"referrer-policy\"] = referrerPolicy;\n }\n\n // Content-Security-Policy\n if (csp) {\n const directives =\n Object.keys(csp).length === 0\n ? this.defaultCspDirectives()\n : csp.directives;\n headers[\"content-security-policy\"] = Object.entries(directives)\n .map(([key, value]) => {\n const kebabKey = key.replace(\n /[A-Z]/g,\n (letter) => `-${letter.toLowerCase()}`,\n );\n if (Array.isArray(value)) {\n return `${kebabKey} ${value.join(\" \")}`;\n }\n if (typeof value === \"boolean\" && value) {\n return kebabKey;\n }\n return `${kebabKey} ${value}`;\n })\n .join(\"; \");\n }\n\n return headers;\n }\n\n protected readonly onResponse = $hook({\n on: \"server:onResponse\",\n priority: \"first\",\n handler: ({ response }) => {\n // this check is important. Only add HSTS on HTTPS requests.\n const isSecure =\n response.headers[\"x-forwarded-proto\"] === \"https\" ||\n this.options.isSecure ||\n this.alepha.isProduction();\n\n const headersToSet = this.buildHeaders();\n\n for (const [key, value] of Object.entries(headersToSet)) {\n if (key === \"strict-transport-security\" && !isSecure) {\n continue;\n }\n // don't overwrite headers if they are already set\n if (!response.headers[key]) {\n response.headers[key] = value;\n }\n }\n },\n });\n}\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerHelmetProvider } from \"./providers/ServerHelmetProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./providers/ServerHelmetProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Automatically adds important HTTP security headers to every response\n * to help protect your application from common web vulnerabilities.\n *\n * @see {@link ServerHelmetProvider}\n * @module alepha.server.helmet\n */\nexport const AlephaServerHelmet = $module({\n name: \"alepha.server.helmet\",\n services: [AlephaServer, ServerHelmetProvider],\n});\n"],"mappings":";;;;;;;AAOA,MAAa,kCAAsB;CACjC,MAAM;CACN,QAAQA,SAAE,OAAO;EACf,UAAUA,SAAE,SAASA,SAAE,SAAS,CAAC;EACjC,yBAAyBA,SAAE,SACzBA,SAAE,OAAO;GACP,QAAQA,SAAE,SAASA,SAAE,QAAQ,CAAC;GAC9B,mBAAmBA,SAAE,SAASA,SAAE,SAAS,CAAC;GAC1C,SAASA,SAAE,SAASA,SAAE,SAAS,CAAC;GACjC,CAAC,CACH;EACD,qBAAqBA,SAAE,SAASA,SAAE,SAAS,CAAC;EAC5C,eAAeA,SAAE,SAASA,SAAE,KAAK,CAAC,QAAQ,aAAa,CAAC,CAAC;EACzD,gBAAgBA,SAAE,SAASA,SAAE,SAAS,CAAC;EACvC,uBAAuBA,SAAE,SACvBA,SAAE,OAAO,EACP,YAAYA,SAAE,OAAOA,SAAE,QAAQ,EAAEA,SAAE,KAAK,CAAC,EAC1C,CAAC,CACH;EACD,gBAAgBA,SAAE,SAChBA,SAAE,KAAK;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,CACH;EACF,CAAC;CACF,SAAS;EACP,yBAAyB;GAAE,QAAQ;GAAU,mBAAmB;GAAM;EACtE,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EACjB;CACF,CAAC;;;;;AAgDF,IAAa,uBAAb,MAAkC;CAChC,AAAmB,6BAAiBC,cAAO;;;;CAK3C,AAAmB,2BAAe,cAAc;CAEhD,AAAU,uBAAsC;AAC9C,SAAO;GACL,eAAe,CAAC,SAAS;GACzB,YAAY,CAAC,SAAS;GACtB,YAAY;IAAC;IAAU;IAAU;IAAQ;GACzC,eAAe,CAAC,SAAS;GACzB,mBAAmB,CAAC,SAAS;GAC7B,WAAW,CAAC,UAAU,QAAQ;GAC9B,cAAc,CAAC,SAAS;GACxB,cAAc,CAAC,SAAS;GACxB,mBAAmB,CAAC,SAAS;GAC7B,aAAa;IAAC;IAAU;IAAU;IAAkB;GACpD,6BAA6B,EAAE;GAChC;;CAGH,AAAU,eAAuC;EAC/C,MAAMC,UAAkC,EAAE;EAC1C,MAAM,EACJ,yBAAyB,MACzB,qBACA,eACA,gBACA,uBAAuB,KACvB,mBACE,KAAK;AAGT,MAAI,MAAM;GACR,IAAI,QAAQ,WAAW,KAAK,UAAU;AACtC,OAAI,KAAK,kBAAmB,UAAS;AACrC,OAAI,KAAK,QAAS,UAAS;AAC3B,WAAQ,+BAA+B;;AAIzC,MAAI,wBAAwB,MAC1B,SAAQ,4BAA4B;AAItC,MAAI,cACF,SAAQ,qBAAqB;AAI/B,MAAI,mBAAmB,MACrB,SAAQ,sBAAsB;AAIhC,MAAI,eACF,SAAQ,qBAAqB;AAI/B,MAAI,KAAK;GACP,MAAM,aACJ,OAAO,KAAK,IAAI,CAAC,WAAW,IACxB,KAAK,sBAAsB,GAC3B,IAAI;AACV,WAAQ,6BAA6B,OAAO,QAAQ,WAAW,CAC5D,KAAK,CAAC,KAAK,WAAW;IACrB,MAAM,WAAW,IAAI,QACnB,WACC,WAAW,IAAI,OAAO,aAAa,GACrC;AACD,QAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,GAAG,SAAS,GAAG,MAAM,KAAK,IAAI;AAEvC,QAAI,OAAO,UAAU,aAAa,MAChC,QAAO;AAET,WAAO,GAAG,SAAS,GAAG;KACtB,CACD,KAAK,KAAK;;AAGf,SAAO;;CAGT,AAAmB,+BAAmB;EACpC,IAAI;EACJ,UAAU;EACV,UAAU,EAAE,eAAe;GAEzB,MAAM,WACJ,SAAS,QAAQ,yBAAyB,WAC1C,KAAK,QAAQ,YACb,KAAK,OAAO,cAAc;GAE5B,MAAM,eAAe,KAAK,cAAc;AAExC,QAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,EAAE;AACvD,QAAI,QAAQ,+BAA+B,CAAC,SAC1C;AAGF,QAAI,CAAC,SAAS,QAAQ,KACpB,UAAS,QAAQ,OAAO;;;EAI/B,CAAC;;;;;;;;;;;;AC3LJ,MAAa,yCAA6B;CACxC,MAAM;CACN,UAAU,CAACC,4BAAc,qBAAqB;CAC/C,CAAC"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import * as alepha1 from "alepha";
|
|
2
|
-
import { Alepha, Static } from "alepha";
|
|
3
|
-
|
|
4
|
-
//#region src/server-helmet/providers/ServerHelmetProvider.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Helmet security headers configuration atom
|
|
7
|
-
*/
|
|
8
|
-
declare const helmetOptions: alepha1.Atom<alepha1.TObject<{
|
|
9
|
-
isSecure: alepha1.TOptional<alepha1.TBoolean>;
|
|
10
|
-
strictTransportSecurity: alepha1.TOptional<alepha1.TObject<{
|
|
11
|
-
maxAge: alepha1.TOptional<alepha1.TNumber>;
|
|
12
|
-
includeSubDomains: alepha1.TOptional<alepha1.TBoolean>;
|
|
13
|
-
preload: alepha1.TOptional<alepha1.TBoolean>;
|
|
14
|
-
}>>;
|
|
15
|
-
xContentTypeOptions: alepha1.TOptional<alepha1.TBoolean>;
|
|
16
|
-
xFrameOptions: alepha1.TOptional<alepha1.TUnsafe<"DENY" | "SAMEORIGIN">>;
|
|
17
|
-
xXssProtection: alepha1.TOptional<alepha1.TBoolean>;
|
|
18
|
-
contentSecurityPolicy: alepha1.TOptional<alepha1.TObject<{
|
|
19
|
-
directives: alepha1.TRecord<"^.*$", alepha1.TAny>;
|
|
20
|
-
}>>;
|
|
21
|
-
referrerPolicy: alepha1.TOptional<alepha1.TUnsafe<"no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url">>;
|
|
22
|
-
}>, "alepha.server.helmet.options">;
|
|
23
|
-
type HelmetOptions = Static<typeof helmetOptions.schema>;
|
|
24
|
-
declare module "alepha" {
|
|
25
|
-
interface State {
|
|
26
|
-
[helmetOptions.key]: HelmetOptions;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
type CspDirective = string | string[];
|
|
30
|
-
interface CspDirectives {
|
|
31
|
-
"default-src"?: CspDirective;
|
|
32
|
-
"script-src"?: CspDirective;
|
|
33
|
-
"style-src"?: CspDirective;
|
|
34
|
-
"img-src"?: CspDirective;
|
|
35
|
-
"connect-src"?: CspDirective;
|
|
36
|
-
"font-src"?: CspDirective;
|
|
37
|
-
"object-src"?: CspDirective;
|
|
38
|
-
"media-src"?: CspDirective;
|
|
39
|
-
"frame-src"?: CspDirective;
|
|
40
|
-
sandbox?: CspDirective | boolean;
|
|
41
|
-
"report-uri"?: string;
|
|
42
|
-
"child-src"?: CspDirective;
|
|
43
|
-
"form-action"?: CspDirective;
|
|
44
|
-
"frame-ancestors"?: CspDirective;
|
|
45
|
-
"plugin-types"?: CspDirective;
|
|
46
|
-
"base-uri"?: CspDirective;
|
|
47
|
-
[key: string]: CspDirective | undefined | boolean;
|
|
48
|
-
}
|
|
49
|
-
interface CspOptions {
|
|
50
|
-
directives: CspDirectives;
|
|
51
|
-
}
|
|
52
|
-
interface HstsOptions {
|
|
53
|
-
maxAge?: number;
|
|
54
|
-
includeSubDomains?: boolean;
|
|
55
|
-
preload?: boolean;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Provides a configurable way to apply essential HTTP security headers
|
|
59
|
-
* to every server response, without external dependencies.
|
|
60
|
-
*/
|
|
61
|
-
declare class ServerHelmetProvider {
|
|
62
|
-
protected readonly alepha: Alepha;
|
|
63
|
-
/**
|
|
64
|
-
* The configuration options loaded from the atom.
|
|
65
|
-
*/
|
|
66
|
-
protected readonly options: Readonly<{
|
|
67
|
-
isSecure?: boolean | undefined;
|
|
68
|
-
strictTransportSecurity?: {
|
|
69
|
-
maxAge?: number | undefined;
|
|
70
|
-
includeSubDomains?: boolean | undefined;
|
|
71
|
-
preload?: boolean | undefined;
|
|
72
|
-
} | undefined;
|
|
73
|
-
xContentTypeOptions?: boolean | undefined;
|
|
74
|
-
xFrameOptions?: "DENY" | "SAMEORIGIN" | undefined;
|
|
75
|
-
xXssProtection?: boolean | undefined;
|
|
76
|
-
contentSecurityPolicy?: {
|
|
77
|
-
directives: Record<string, any>;
|
|
78
|
-
} | undefined;
|
|
79
|
-
referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
|
|
80
|
-
}>;
|
|
81
|
-
protected defaultCspDirectives(): CspDirectives;
|
|
82
|
-
protected buildHeaders(): Record<string, string>;
|
|
83
|
-
protected readonly onResponse: alepha1.HookDescriptor<"server:onResponse">;
|
|
84
|
-
}
|
|
85
|
-
//#endregion
|
|
86
|
-
//#region src/server-helmet/index.d.ts
|
|
87
|
-
/**
|
|
88
|
-
* Automatically adds important HTTP security headers to every response
|
|
89
|
-
* to help protect your application from common web vulnerabilities.
|
|
90
|
-
*
|
|
91
|
-
* @see {@link ServerHelmetProvider}
|
|
92
|
-
* @module alepha.server.helmet
|
|
93
|
-
*/
|
|
94
|
-
declare const AlephaServerHelmet: alepha1.Service<alepha1.Module>;
|
|
95
|
-
//#endregion
|
|
96
|
-
export { AlephaServerHelmet, CspDirectives, CspOptions, HelmetOptions, HstsOptions, ServerHelmetProvider, helmetOptions };
|
|
97
|
-
//# sourceMappingURL=index.d.cts.map
|