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,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
Descriptor,
|
|
2
|
+
createPrimitive,
|
|
4
3
|
type InstantiableClass,
|
|
5
4
|
KIND,
|
|
5
|
+
Primitive,
|
|
6
6
|
} from "alepha";
|
|
7
7
|
import type { EmailSendOptions } from "../providers/EmailProvider.ts";
|
|
8
8
|
import { EmailProvider } from "../providers/EmailProvider.ts";
|
|
@@ -10,12 +10,12 @@ import { MemoryEmailProvider } from "../providers/MemoryEmailProvider.ts";
|
|
|
10
10
|
|
|
11
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
12
12
|
|
|
13
|
-
export const $email = (options:
|
|
14
|
-
|
|
13
|
+
export const $email = (options: EmailPrimitiveOptions = {}) =>
|
|
14
|
+
createPrimitive(EmailPrimitive, options);
|
|
15
15
|
|
|
16
16
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
17
17
|
|
|
18
|
-
export interface
|
|
18
|
+
export interface EmailPrimitiveOptions {
|
|
19
19
|
name?: string;
|
|
20
20
|
provider?: InstantiableClass<EmailProvider> | "memory";
|
|
21
21
|
}
|
|
@@ -23,7 +23,7 @@ export interface EmailDescriptorOptions {
|
|
|
23
23
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Email
|
|
26
|
+
* Email primitive for sending emails through various providers.
|
|
27
27
|
*
|
|
28
28
|
* Usage:
|
|
29
29
|
* ```typescript
|
|
@@ -40,7 +40,7 @@ export interface EmailDescriptorOptions {
|
|
|
40
40
|
* }
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
|
-
export class
|
|
43
|
+
export class EmailPrimitive extends Primitive<EmailPrimitiveOptions> {
|
|
44
44
|
protected readonly provider = this.$provider();
|
|
45
45
|
|
|
46
46
|
public get name() {
|
|
@@ -83,4 +83,4 @@ export class EmailDescriptor extends Descriptor<EmailDescriptorOptions> {
|
|
|
83
83
|
|
|
84
84
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
85
85
|
|
|
86
|
-
$email[KIND] =
|
|
86
|
+
$email[KIND] = EmailPrimitive;
|
package/src/file/index.ts
CHANGED
|
@@ -24,7 +24,7 @@ export * from "./services/FileDetector.ts";
|
|
|
24
24
|
*/
|
|
25
25
|
export const AlephaFile = $module({
|
|
26
26
|
name: "alepha.file",
|
|
27
|
-
|
|
27
|
+
primitives: [],
|
|
28
28
|
services: [FileDetector, FileSystemProvider, NodeFileSystemProvider],
|
|
29
29
|
register: (alepha) =>
|
|
30
30
|
alepha.with({
|
package/src/lock/index.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { $module } from "alepha";
|
|
2
2
|
import { MemoryTopicProvider } from "alepha/topic";
|
|
3
|
-
import { $lock } from "./
|
|
3
|
+
import { $lock } from "./primitives/$lock.ts";
|
|
4
4
|
import { LockProvider } from "./providers/LockProvider.ts";
|
|
5
5
|
import { LockTopicProvider } from "./providers/LockTopicProvider.ts";
|
|
6
6
|
import { MemoryLockProvider } from "./providers/MemoryLockProvider.ts";
|
|
7
7
|
|
|
8
8
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
9
9
|
|
|
10
|
-
export * from "./
|
|
10
|
+
export * from "./primitives/$lock.ts";
|
|
11
11
|
export * from "./providers/LockProvider.ts";
|
|
12
12
|
export * from "./providers/LockTopicProvider.ts";
|
|
13
13
|
export * from "./providers/MemoryLockProvider.ts";
|
|
@@ -25,7 +25,7 @@ export * from "./providers/MemoryLockProvider.ts";
|
|
|
25
25
|
*/
|
|
26
26
|
export const AlephaLock = $module({
|
|
27
27
|
name: "alepha.lock",
|
|
28
|
-
|
|
28
|
+
primitives: [$lock],
|
|
29
29
|
services: [LockProvider, MemoryLockProvider, LockTopicProvider],
|
|
30
30
|
register: (alepha) =>
|
|
31
31
|
alepha
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
$env,
|
|
3
3
|
$inject,
|
|
4
4
|
type AsyncFn,
|
|
5
|
-
|
|
6
|
-
Descriptor,
|
|
5
|
+
createPrimitive,
|
|
7
6
|
KIND,
|
|
7
|
+
Primitive,
|
|
8
8
|
type Static,
|
|
9
9
|
t,
|
|
10
10
|
} from "alepha";
|
|
@@ -19,7 +19,7 @@ import { LockProvider } from "../providers/LockProvider.ts";
|
|
|
19
19
|
import { LockTopicProvider } from "../providers/LockTopicProvider.ts";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Creates a distributed lock
|
|
22
|
+
* Creates a distributed lock primitive for ensuring single-instance execution across processes.
|
|
23
23
|
*
|
|
24
24
|
* Prevents multiple instances of the same operation from running simultaneously, essential for
|
|
25
25
|
* maintaining data consistency and preventing race conditions in distributed applications.
|
|
@@ -68,14 +68,14 @@ import { LockTopicProvider } from "../providers/LockTopicProvider.ts";
|
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
70
|
export const $lock = <TFunc extends AsyncFn>(
|
|
71
|
-
options:
|
|
72
|
-
):
|
|
73
|
-
return
|
|
71
|
+
options: LockPrimitiveOptions<TFunc>,
|
|
72
|
+
): LockPrimitive<TFunc> => {
|
|
73
|
+
return createPrimitive(LockPrimitive<TFunc>, options);
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
77
77
|
|
|
78
|
-
export interface
|
|
78
|
+
export interface LockPrimitiveOptions<TFunc extends AsyncFn> {
|
|
79
79
|
/**
|
|
80
80
|
* The function to execute when the lock is successfully acquired.
|
|
81
81
|
*
|
|
@@ -295,8 +295,8 @@ declare module "alepha" {
|
|
|
295
295
|
interface Env extends Partial<Static<typeof envSchema>> {}
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
export class
|
|
299
|
-
|
|
298
|
+
export class LockPrimitive<TFunc extends AsyncFn> extends Primitive<
|
|
299
|
+
LockPrimitiveOptions<TFunc>
|
|
300
300
|
> {
|
|
301
301
|
protected readonly log = $logger();
|
|
302
302
|
protected readonly provider = $inject(LockProvider);
|
|
@@ -439,7 +439,7 @@ export class LockDescriptor<TFunc extends AsyncFn> extends Descriptor<
|
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
-
$lock[KIND] =
|
|
442
|
+
$lock[KIND] = LockPrimitive;
|
|
443
443
|
|
|
444
444
|
export interface LockResult {
|
|
445
445
|
id: string;
|
package/src/logger/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $module, type Static, t } from "alepha";
|
|
2
|
-
import { $logger } from "./
|
|
2
|
+
import { $logger } from "./primitives/$logger.ts";
|
|
3
3
|
import { ConsoleDestinationProvider } from "./providers/ConsoleDestinationProvider.ts";
|
|
4
4
|
import { JsonFormatterProvider } from "./providers/JsonFormatterProvider.ts";
|
|
5
5
|
import { LogDestinationProvider } from "./providers/LogDestinationProvider.ts";
|
|
@@ -12,7 +12,7 @@ import { Logger } from "./services/Logger.ts";
|
|
|
12
12
|
|
|
13
13
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
14
14
|
|
|
15
|
-
export * from "./
|
|
15
|
+
export * from "./primitives/$logger.ts";
|
|
16
16
|
export * from "./providers/ConsoleColorProvider.ts";
|
|
17
17
|
export * from "./providers/ConsoleDestinationProvider.ts";
|
|
18
18
|
export * from "./providers/JsonFormatterProvider.ts";
|
|
@@ -28,7 +28,7 @@ export * from "./services/Logger.ts";
|
|
|
28
28
|
/**
|
|
29
29
|
* Minimalist logger module for Alepha.
|
|
30
30
|
*
|
|
31
|
-
* It offers a global logger interface (info, warn, ...) via the `$logger`
|
|
31
|
+
* It offers a global logger interface (info, warn, ...) via the `$logger` primitive.
|
|
32
32
|
*
|
|
33
33
|
* ```ts
|
|
34
34
|
* import { $logger } from "alepha/logger";
|
|
@@ -95,7 +95,7 @@ export * from "./services/Logger.ts";
|
|
|
95
95
|
*/
|
|
96
96
|
export const AlephaLogger = $module({
|
|
97
97
|
name: "alepha.logger",
|
|
98
|
-
|
|
98
|
+
primitives: [$logger],
|
|
99
99
|
services: [
|
|
100
100
|
Logger,
|
|
101
101
|
ConsoleDestinationProvider,
|
|
@@ -121,8 +121,8 @@ export const AlephaLogger = $module({
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
try {
|
|
124
|
-
alepha.
|
|
125
|
-
alepha.
|
|
124
|
+
alepha.store.get("alepha.test.afterEach")?.(printOnError);
|
|
125
|
+
alepha.store.get("alepha.test.onTestFinished")?.(printOnError);
|
|
126
126
|
} catch {
|
|
127
127
|
// ignore
|
|
128
128
|
}
|
|
@@ -163,7 +163,7 @@ export const AlephaLogger = $module({
|
|
|
163
163
|
use: getLogFormatterProvider(),
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
-
alepha.
|
|
166
|
+
alepha.store.set(
|
|
167
167
|
"alepha.logger",
|
|
168
168
|
alepha.inject(Logger, {
|
|
169
169
|
lifetime: "transient",
|
|
@@ -171,7 +171,7 @@ export const AlephaLogger = $module({
|
|
|
171
171
|
}),
|
|
172
172
|
);
|
|
173
173
|
|
|
174
|
-
alepha.
|
|
174
|
+
alepha.store.set(
|
|
175
175
|
"alepha.logger.level",
|
|
176
176
|
env.LOG_LEVEL ?? (alepha.isTest() ? "trace" : "info"),
|
|
177
177
|
);
|
|
@@ -20,7 +20,7 @@ import { Logger } from "../services/Logger.ts";
|
|
|
20
20
|
* }
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
export const $logger = (options:
|
|
23
|
+
export const $logger = (options: LoggerPrimitiveOptions = {}): Logger => {
|
|
24
24
|
const { alepha, service, module } = $context();
|
|
25
25
|
|
|
26
26
|
return $inject(Logger, {
|
|
@@ -32,7 +32,7 @@ export const $logger = (options: LoggerDescriptorOptions = {}): Logger => {
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
export interface
|
|
35
|
+
export interface LoggerPrimitiveOptions {
|
|
36
36
|
name?: string;
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -43,7 +43,7 @@ export class Logger implements LoggerInterface {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
public get level(): string {
|
|
46
|
-
const stateLogLevel = this.alepha.
|
|
46
|
+
const stateLogLevel = this.alepha.store.get("alepha.logger.level");
|
|
47
47
|
if (stateLogLevel && stateLogLevel !== this.appLogLevel) {
|
|
48
48
|
this.appLogLevel = stateLogLevel;
|
|
49
49
|
this.logLevel = this.parseLevel(this.appLogLevel, this.module);
|
|
@@ -2,7 +2,7 @@ import type {
|
|
|
2
2
|
PgSequenceOptions,
|
|
3
3
|
UpdateDeleteAction,
|
|
4
4
|
} from "drizzle-orm/pg-core";
|
|
5
|
-
import type {
|
|
5
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
6
6
|
|
|
7
7
|
export const PG_DEFAULT = Symbol.for("Alepha.Postgres.Default");
|
|
8
8
|
export const PG_PRIMARY_KEY = Symbol.for("Alepha.Postgres.PrimaryKey");
|
|
@@ -56,7 +56,7 @@ export interface PgEnumOptions {
|
|
|
56
56
|
export interface PgRefOptions {
|
|
57
57
|
ref: () => {
|
|
58
58
|
name: string;
|
|
59
|
-
entity:
|
|
59
|
+
entity: EntityPrimitive;
|
|
60
60
|
};
|
|
61
61
|
actions?: {
|
|
62
62
|
onUpdate?: UpdateDeleteAction;
|
package/src/orm/index.browser.ts
CHANGED
|
@@ -9,13 +9,13 @@ export {
|
|
|
9
9
|
pageQuerySchema,
|
|
10
10
|
pageSchema,
|
|
11
11
|
} from "alepha";
|
|
12
|
-
export * from "./descriptors/$entity.ts";
|
|
13
12
|
export * from "./errors/DbEntityNotFoundError.ts";
|
|
14
13
|
export * from "./helpers/parseQueryString.ts";
|
|
15
14
|
export * from "./helpers/pgAttr.ts";
|
|
16
15
|
export * from "./interfaces/FilterOperators.ts";
|
|
17
16
|
export * from "./interfaces/PgQuery.ts";
|
|
18
17
|
export * from "./interfaces/PgQueryWhere.ts";
|
|
18
|
+
export * from "./primitives/$entity.ts";
|
|
19
19
|
export * from "./providers/PostgresTypeProvider.ts";
|
|
20
20
|
export * from "./schemas/legacyIdSchema.ts";
|
|
21
21
|
|
|
@@ -23,6 +23,6 @@ export * from "./schemas/legacyIdSchema.ts";
|
|
|
23
23
|
|
|
24
24
|
export const AlephaPostgres = $module({
|
|
25
25
|
name: "alepha.postgres",
|
|
26
|
-
|
|
26
|
+
primitives: [],
|
|
27
27
|
services: [AlephaDateTime],
|
|
28
28
|
});
|
package/src/orm/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { $module, type Alepha, t } from "alepha";
|
|
2
2
|
import { AlephaDateTime } from "alepha/datetime";
|
|
3
3
|
import * as drizzle from "drizzle-orm";
|
|
4
|
-
import { $entity } from "./
|
|
5
|
-
import { $repository } from "./
|
|
6
|
-
import { $sequence } from "./
|
|
4
|
+
import { $entity } from "./primitives/$entity.ts";
|
|
5
|
+
import { $repository } from "./primitives/$repository.ts";
|
|
6
|
+
import { $sequence } from "./primitives/$sequence.ts";
|
|
7
7
|
import { DrizzleKitProvider } from "./providers/DrizzleKitProvider.ts";
|
|
8
8
|
import { DatabaseProvider } from "./providers/drivers/DatabaseProvider.ts";
|
|
9
9
|
import { NodePostgresProvider } from "./providers/drivers/NodePostgresProvider.ts";
|
|
@@ -95,10 +95,6 @@ export {
|
|
|
95
95
|
export { sql } from "drizzle-orm";
|
|
96
96
|
export * from "drizzle-orm/pg-core";
|
|
97
97
|
export * from "./constants/PG_SYMBOLS.ts";
|
|
98
|
-
export * from "./descriptors/$entity.ts";
|
|
99
|
-
export * from "./descriptors/$repository.ts";
|
|
100
|
-
export * from "./descriptors/$sequence.ts";
|
|
101
|
-
export * from "./descriptors/$transaction.ts";
|
|
102
98
|
export * from "./errors/DbConflictError.ts";
|
|
103
99
|
export * from "./errors/DbEntityNotFoundError.ts";
|
|
104
100
|
export * from "./errors/DbError.ts";
|
|
@@ -109,6 +105,10 @@ export * from "./helpers/pgAttr.ts";
|
|
|
109
105
|
export * from "./interfaces/FilterOperators.ts";
|
|
110
106
|
export * from "./interfaces/PgQuery.ts";
|
|
111
107
|
export * from "./interfaces/PgQueryWhere.ts";
|
|
108
|
+
export * from "./primitives/$entity.ts";
|
|
109
|
+
export * from "./primitives/$repository.ts";
|
|
110
|
+
export * from "./primitives/$sequence.ts";
|
|
111
|
+
export * from "./primitives/$transaction.ts";
|
|
112
112
|
export * from "./providers/DrizzleKitProvider.ts";
|
|
113
113
|
export * from "./providers/drivers/DatabaseProvider.ts";
|
|
114
114
|
export * from "./providers/drivers/NodePostgresProvider.ts";
|
|
@@ -164,7 +164,7 @@ export * from "./types/schema.ts";
|
|
|
164
164
|
*/
|
|
165
165
|
export const AlephaPostgres = $module({
|
|
166
166
|
name: "alepha.postgres",
|
|
167
|
-
|
|
167
|
+
primitives: [$sequence, $entity],
|
|
168
168
|
services: [
|
|
169
169
|
AlephaDateTime,
|
|
170
170
|
DatabaseProvider,
|
|
@@ -9,7 +9,7 @@ import { insertSchema, type TObjectInsert } from "../schemas/insertSchema.ts";
|
|
|
9
9
|
import { type TObjectUpdate, updateSchema } from "../schemas/updateSchema.ts";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Creates a database entity
|
|
12
|
+
* Creates a database entity primitive that defines table structure using TypeBox schemas.
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```ts
|
|
@@ -27,14 +27,14 @@ import { type TObjectUpdate, updateSchema } from "../schemas/updateSchema.ts";
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
export const $entity = <TSchema extends TObject>(
|
|
30
|
-
options:
|
|
31
|
-
):
|
|
32
|
-
return new
|
|
30
|
+
options: EntityPrimitiveOptions<TSchema>,
|
|
31
|
+
): EntityPrimitive<TSchema> => {
|
|
32
|
+
return new EntityPrimitive<TSchema>(options);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
36
36
|
|
|
37
|
-
export interface
|
|
37
|
+
export interface EntityPrimitiveOptions<
|
|
38
38
|
T extends TObject,
|
|
39
39
|
Keys = keyof Static<T>,
|
|
40
40
|
> {
|
|
@@ -163,15 +163,15 @@ export interface EntityDescriptorOptions<
|
|
|
163
163
|
|
|
164
164
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
165
165
|
|
|
166
|
-
export class
|
|
167
|
-
public readonly options:
|
|
166
|
+
export class EntityPrimitive<T extends TObject = TObject> {
|
|
167
|
+
public readonly options: EntityPrimitiveOptions<T>;
|
|
168
168
|
|
|
169
|
-
constructor(options:
|
|
169
|
+
constructor(options: EntityPrimitiveOptions<T>) {
|
|
170
170
|
this.options = options;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
alias(alias: string): this {
|
|
174
|
-
const aliased = new
|
|
174
|
+
const aliased = new EntityPrimitive<T>(this.options);
|
|
175
175
|
return new Proxy(aliased, {
|
|
176
176
|
get(target, prop, receiver) {
|
|
177
177
|
if (prop === "$alias") {
|
|
@@ -213,7 +213,7 @@ export class EntityDescriptor<T extends TObject = TObject> {
|
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
$entity[KIND] =
|
|
216
|
+
$entity[KIND] = EntityPrimitive;
|
|
217
217
|
|
|
218
218
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
219
219
|
|
|
@@ -235,7 +235,7 @@ export type SchemaToTableConfig<T extends TObject> = {
|
|
|
235
235
|
|
|
236
236
|
export type EntityColumn<T extends TObject> = {
|
|
237
237
|
name: string;
|
|
238
|
-
entity:
|
|
238
|
+
entity: EntityPrimitive<T>;
|
|
239
239
|
};
|
|
240
240
|
|
|
241
241
|
export type EntityColumns<T extends TObject> = {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { $context, $inject, type TObject } from "alepha";
|
|
2
2
|
import { RepositoryProvider } from "../providers/RepositoryProvider.ts";
|
|
3
3
|
import type { Repository } from "../services/Repository.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { EntityPrimitive } from "./$entity.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Get the repository for the given entity.
|
|
8
8
|
*/
|
|
9
9
|
export const $repository = <T extends TObject>(
|
|
10
|
-
entity:
|
|
10
|
+
entity: EntityPrimitive<T>,
|
|
11
11
|
): Repository<T> => {
|
|
12
12
|
const { alepha } = $context();
|
|
13
13
|
const repositoryProvider = alepha.inject(RepositoryProvider);
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createPrimitive, KIND, Primitive } from "alepha";
|
|
2
2
|
import { sql } from "drizzle-orm";
|
|
3
3
|
import type { PgSequenceOptions } from "drizzle-orm/pg-core";
|
|
4
4
|
import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Creates a PostgreSQL sequence
|
|
7
|
+
* Creates a PostgreSQL sequence primitive for generating unique numeric values.
|
|
8
8
|
*/
|
|
9
9
|
export const $sequence = (
|
|
10
|
-
options:
|
|
11
|
-
):
|
|
12
|
-
return
|
|
10
|
+
options: SequencePrimitiveOptions = {},
|
|
11
|
+
): SequencePrimitive => {
|
|
12
|
+
return createPrimitive(SequencePrimitive, options);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
16
16
|
|
|
17
|
-
export interface
|
|
17
|
+
export interface SequencePrimitiveOptions extends PgSequenceOptions {
|
|
18
18
|
/**
|
|
19
19
|
* The name of the sequence. If not provided, the property key will be used.
|
|
20
20
|
*/
|
|
@@ -25,7 +25,7 @@ export interface SequenceDescriptorOptions extends PgSequenceOptions {
|
|
|
25
25
|
|
|
26
26
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
27
27
|
|
|
28
|
-
export class
|
|
28
|
+
export class SequencePrimitive extends Primitive<SequencePrimitiveOptions> {
|
|
29
29
|
public readonly provider = this.$provider();
|
|
30
30
|
|
|
31
31
|
public onInit() {
|
|
@@ -57,4 +57,4 @@ export class SequenceDescriptor extends Descriptor<SequenceDescriptorOptions> {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
$sequence[KIND] =
|
|
60
|
+
$sequence[KIND] = SequencePrimitive;
|
|
@@ -6,9 +6,9 @@ import { DbVersionMismatchError } from "../errors/DbVersionMismatchError.ts";
|
|
|
6
6
|
import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Creates a transaction
|
|
9
|
+
* Creates a transaction primitive for database operations requiring atomicity and consistency.
|
|
10
10
|
*
|
|
11
|
-
* This
|
|
11
|
+
* This primitive provides a convenient way to wrap database operations in PostgreSQL
|
|
12
12
|
* transactions, ensuring ACID properties and automatic retry logic for version conflicts.
|
|
13
13
|
* It integrates seamlessly with the repository pattern and provides built-in handling
|
|
14
14
|
* for optimistic locking scenarios with automatic retry on version mismatches.
|
|
@@ -21,7 +21,7 @@ import { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
|
21
21
|
* - Use appropriate isolation levels based on your consistency requirements
|
|
22
22
|
*/
|
|
23
23
|
export const $transaction = <T extends any[], R>(
|
|
24
|
-
opts:
|
|
24
|
+
opts: TransactionPrimitiveOptions<T, R>,
|
|
25
25
|
) => {
|
|
26
26
|
const { alepha } = $context();
|
|
27
27
|
const provider = alepha.inject(DatabaseProvider);
|
|
@@ -38,7 +38,7 @@ export const $transaction = <T extends any[], R>(
|
|
|
38
38
|
|
|
39
39
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
40
40
|
|
|
41
|
-
export interface
|
|
41
|
+
export interface TransactionPrimitiveOptions<T extends any[], R> {
|
|
42
42
|
/**
|
|
43
43
|
* Transaction handler function that contains all database operations to be executed atomically.
|
|
44
44
|
*
|
|
@@ -297,7 +297,7 @@ export class DrizzleKitProvider {
|
|
|
297
297
|
* Try to load the official Drizzle Kit API.
|
|
298
298
|
* If not available, fallback to the local kit import.
|
|
299
299
|
*/
|
|
300
|
-
|
|
300
|
+
public importDrizzleKit(): typeof DrizzleKit {
|
|
301
301
|
try {
|
|
302
302
|
return createRequire(import.meta.url)("drizzle-kit/api");
|
|
303
303
|
} catch (_) {
|
|
@@ -159,9 +159,9 @@ export class PostgresTypeProvider {
|
|
|
159
159
|
*
|
|
160
160
|
* This is used to track the version of a row in the database.
|
|
161
161
|
*
|
|
162
|
-
* You can use it for optimistic concurrency control (OCC) with {@link
|
|
162
|
+
* You can use it for optimistic concurrency control (OCC) with {@link RepositoryPrimitive#save}.
|
|
163
163
|
*
|
|
164
|
-
* @see {@link
|
|
164
|
+
* @see {@link RepositoryPrimitive#save}
|
|
165
165
|
* @see {@link PgVersionMismatchError}
|
|
166
166
|
*/
|
|
167
167
|
public readonly version = (options: TNumberOptions = {}) =>
|
|
@@ -239,7 +239,7 @@ export class PostgresTypeProvider {
|
|
|
239
239
|
|
|
240
240
|
/**
|
|
241
241
|
* Creates a page schema for a given object schema.
|
|
242
|
-
* It's used by {@link
|
|
242
|
+
* It's used by {@link RepositoryPrimitive#paginate} method.
|
|
243
243
|
*/
|
|
244
244
|
public readonly page = <T extends TObject>(
|
|
245
245
|
resource: T,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { $inject, Alepha, type Service, type TObject } from "alepha";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
3
3
|
import { Repository } from "../services/Repository.ts";
|
|
4
4
|
import type { DatabaseProvider } from "./drivers/DatabaseProvider.ts";
|
|
5
5
|
|
|
6
6
|
export class RepositoryProvider {
|
|
7
7
|
protected readonly alepha = $inject(Alepha);
|
|
8
8
|
protected readonly registry = new Map<
|
|
9
|
-
|
|
9
|
+
EntityPrimitive<any>,
|
|
10
10
|
Service<Repository<any>>
|
|
11
11
|
>();
|
|
12
12
|
|
|
@@ -21,14 +21,14 @@ export class RepositoryProvider {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
public getRepository<T extends TObject>(
|
|
24
|
-
entity:
|
|
24
|
+
entity: EntityPrimitive<T>,
|
|
25
25
|
): Repository<T> {
|
|
26
26
|
const RepositoryClass = this.createClassRepository(entity);
|
|
27
27
|
return this.alepha.inject(RepositoryClass);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
public createClassRepository<T extends TObject>(
|
|
31
|
-
entity:
|
|
31
|
+
entity: EntityPrimitive<T>,
|
|
32
32
|
): Service<Repository<T>> {
|
|
33
33
|
let name = entity.name.charAt(0).toUpperCase() + entity.name.slice(1);
|
|
34
34
|
if (name.endsWith("s")) {
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
type PgDatabase,
|
|
14
14
|
type PgTableWithColumns,
|
|
15
15
|
} from "drizzle-orm/pg-core";
|
|
16
|
+
import { DbError } from "../../errors/DbError.ts";
|
|
16
17
|
import type {
|
|
17
|
-
|
|
18
|
+
EntityPrimitive,
|
|
18
19
|
SchemaToTableConfig,
|
|
19
|
-
} from "../../
|
|
20
|
-
import type {
|
|
21
|
-
import { DbError } from "../../errors/DbError.ts";
|
|
20
|
+
} from "../../primitives/$entity.ts";
|
|
21
|
+
import type { SequencePrimitive } from "../../primitives/$sequence.ts";
|
|
22
22
|
import type { ModelBuilder } from "../../services/ModelBuilder.ts";
|
|
23
23
|
import type { DrizzleKitProvider } from "../DrizzleKitProvider.ts";
|
|
24
24
|
|
|
@@ -46,7 +46,7 @@ export abstract class DatabaseProvider {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
public table<T extends TObject>(
|
|
49
|
-
entity:
|
|
49
|
+
entity: EntityPrimitive<T>,
|
|
50
50
|
): PgTableWithColumns<SchemaToTableConfig<T>> {
|
|
51
51
|
const table = this.tables.get(entity.name);
|
|
52
52
|
if (!table) {
|
|
@@ -65,11 +65,11 @@ export abstract class DatabaseProvider {
|
|
|
65
65
|
return table as PgTableWithColumns<SchemaToTableConfig<T>>;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
public registerEntity(entity:
|
|
68
|
+
public registerEntity(entity: EntityPrimitive) {
|
|
69
69
|
this.builder.buildTable(entity, this);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
public registerSequence(sequence:
|
|
72
|
+
public registerSequence(sequence: SequencePrimitive) {
|
|
73
73
|
this.builder.buildSequence(sequence, this);
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SQL } from "drizzle-orm";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
3
|
+
import type { SequencePrimitive } from "../primitives/$sequence.ts";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Database-specific table configuration functions
|
|
@@ -24,15 +24,15 @@ export interface TableConfigBuilders<TConfig> {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
* Abstract base class for transforming Alepha
|
|
27
|
+
* Abstract base class for transforming Alepha Primitives (Entity, Sequence, etc...)
|
|
28
28
|
* into drizzle models (tables, enums, sequences, etc...).
|
|
29
29
|
*/
|
|
30
30
|
export abstract class ModelBuilder {
|
|
31
31
|
/**
|
|
32
|
-
* Build a table from an entity
|
|
32
|
+
* Build a table from an entity primitive.
|
|
33
33
|
*/
|
|
34
34
|
abstract buildTable(
|
|
35
|
-
entity:
|
|
35
|
+
entity: EntityPrimitive,
|
|
36
36
|
options: {
|
|
37
37
|
tables: Map<string, unknown>;
|
|
38
38
|
enums: Map<string, unknown>;
|
|
@@ -41,10 +41,10 @@ export abstract class ModelBuilder {
|
|
|
41
41
|
): void;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* Build a sequence from a sequence
|
|
44
|
+
* Build a sequence from a sequence primitive.
|
|
45
45
|
*/
|
|
46
46
|
abstract buildSequence(
|
|
47
|
-
sequence:
|
|
47
|
+
sequence: SequencePrimitive,
|
|
48
48
|
options: {
|
|
49
49
|
sequences: Map<string, unknown>;
|
|
50
50
|
schema: string;
|
|
@@ -65,13 +65,13 @@ export abstract class ModelBuilder {
|
|
|
65
65
|
* Build the table configuration function for any database.
|
|
66
66
|
* This includes indexes, foreign keys, constraints, and custom config.
|
|
67
67
|
*
|
|
68
|
-
* @param entity - The entity
|
|
68
|
+
* @param entity - The entity primitive
|
|
69
69
|
* @param builders - Database-specific builder functions
|
|
70
70
|
* @param tableResolver - Function to resolve entity references to table columns
|
|
71
71
|
* @param customConfigHandler - Optional handler for custom config
|
|
72
72
|
*/
|
|
73
73
|
protected buildTableConfig<TConfig, TSelf>(
|
|
74
|
-
entity:
|
|
74
|
+
entity: EntityPrimitive,
|
|
75
75
|
builders: TableConfigBuilders<TConfig>,
|
|
76
76
|
tableResolver?: (entityName: string) => any,
|
|
77
77
|
customConfigHandler?: (config: any, self: TSelf) => TConfig[],
|
|
@@ -2,8 +2,8 @@ import { type TObject, TypeBoxValue, t } from "alepha";
|
|
|
2
2
|
import { getTableName, type SQL, sql } from "drizzle-orm";
|
|
3
3
|
import type { PgSelectBase, PgTableWithColumns } from "drizzle-orm/pg-core";
|
|
4
4
|
import { isSQLWrapper } from "drizzle-orm/sql/sql";
|
|
5
|
-
import type { EntityDescriptor } from "../descriptors/$entity.ts";
|
|
6
5
|
import type { PgRelationMap } from "../interfaces/PgQuery.ts";
|
|
6
|
+
import type { EntityPrimitive } from "../primitives/$entity.ts";
|
|
7
7
|
import type { DatabaseProvider } from "../providers/drivers/DatabaseProvider.ts";
|
|
8
8
|
import type { PgJoin } from "./QueryManager.ts";
|
|
9
9
|
|
|
@@ -20,7 +20,7 @@ export class PgRelationManager {
|
|
|
20
20
|
parentKey?: string,
|
|
21
21
|
) {
|
|
22
22
|
for (const [key, join] of Object.entries(withRelations)) {
|
|
23
|
-
const from = provider.table(join.join as
|
|
23
|
+
const from = provider.table(join.join as EntityPrimitive);
|
|
24
24
|
const on = isSQLWrapper(join.on)
|
|
25
25
|
? (join.on as SQL)
|
|
26
26
|
: sql`${table[join.on[0] as string]} = ${from[join.on[1].name]}`;
|