alepha 0.13.6 → 0.13.8
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 +5 -2
- package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
- package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
- package/assets/swagger-ui/swagger-ui.css +1 -1
- package/dist/api/audits/index.browser.js +116 -0
- package/dist/api/audits/index.browser.js.map +1 -0
- package/dist/api/audits/index.d.ts +1194 -0
- package/dist/api/audits/index.js +674 -0
- package/dist/api/audits/index.js.map +1 -0
- package/dist/{api-files → api/files}/index.browser.js +5 -5
- package/dist/api/files/index.browser.js.map +1 -0
- package/dist/{api-files → api/files}/index.d.ts +16 -9
- package/dist/{api-files → api/files}/index.js +10 -10
- package/dist/api/files/index.js.map +1 -0
- package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
- package/dist/api/jobs/index.browser.js.map +1 -0
- package/dist/{api-jobs → api/jobs}/index.d.ts +35 -35
- package/dist/{api-jobs → api/jobs}/index.js +9 -9
- package/dist/api/jobs/index.js.map +1 -0
- package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
- package/dist/api/notifications/index.browser.js.map +1 -0
- package/dist/api/notifications/index.d.ts +327 -0
- package/dist/{api-notifications → api/notifications}/index.js +11 -11
- package/dist/api/notifications/index.js.map +1 -0
- package/dist/api/parameters/index.browser.js +60 -0
- package/dist/api/parameters/index.browser.js.map +1 -0
- package/dist/api/parameters/index.d.ts +761 -0
- package/dist/api/parameters/index.js +877 -0
- package/dist/api/parameters/index.js.map +1 -0
- package/dist/{api-users → api/users}/index.browser.js +6 -6
- package/dist/api/users/index.browser.js.map +1 -0
- package/dist/{api-users → api/users}/index.d.ts +259 -247
- package/dist/{api-users → api/users}/index.js +125 -112
- package/dist/api/users/index.js.map +1 -0
- package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
- package/dist/api/verifications/index.browser.js.map +1 -0
- package/dist/api/verifications/index.d.ts +248 -0
- package/dist/{api-verifications → api/verifications}/index.js +13 -12
- package/dist/api/verifications/index.js.map +1 -0
- package/dist/bin/index.js +1 -0
- package/dist/bin/index.js.map +1 -1
- package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
- package/dist/cache/{index.js → core/index.js} +5 -5
- package/dist/cache/core/index.js.map +1 -0
- package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
- package/dist/{cache-redis → cache/redis}/index.js +2 -2
- package/dist/cache/redis/index.js.map +1 -0
- package/dist/cli/index.d.ts +71 -9
- package/dist/cli/index.js +280 -79
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +63 -2
- package/dist/command/index.js +30 -3
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +241 -61
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +170 -90
- package/dist/core/index.js +264 -67
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +248 -65
- package/dist/core/index.native.js.map +1 -1
- package/dist/email/index.js +15 -10554
- package/dist/email/index.js.map +1 -1
- package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
- package/dist/lock/{index.js → core/index.js} +5 -5
- package/dist/lock/core/index.js.map +1 -0
- package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
- package/dist/{lock-redis → lock/redis}/index.js +2 -2
- package/dist/lock/redis/index.js.map +1 -0
- package/dist/logger/index.d.ts +4 -4
- package/dist/logger/index.js +77 -72
- package/dist/logger/index.js.map +1 -1
- package/dist/orm/index.d.ts +5 -1
- package/dist/orm/index.js +24 -7
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +548 -0
- package/dist/queue/core/index.js +391 -0
- package/dist/queue/core/index.js.map +1 -0
- package/dist/queue/redis/index.d.ts +28 -0
- package/dist/queue/redis/index.js +43 -0
- package/dist/queue/redis/index.js.map +1 -0
- package/dist/scheduler/index.d.ts +7 -7
- package/dist/scheduler/index.js +1 -393
- package/dist/scheduler/index.js.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +2 -1413
- package/dist/security/index.js.map +1 -1
- package/dist/{server-auth → server/auth}/index.browser.js +6 -6
- package/dist/server/auth/index.browser.js.map +1 -0
- package/dist/{server-auth → server/auth}/index.d.ts +175 -164
- package/dist/server/auth/index.js +742 -0
- package/dist/server/auth/index.js.map +1 -0
- package/dist/{server-cache → server/cache}/index.d.ts +2 -2
- package/dist/{server-cache → server/cache}/index.js +2 -2
- package/dist/server/cache/index.js.map +1 -0
- package/dist/{server-compress → server/compress}/index.d.ts +2 -2
- package/dist/{server-compress → server/compress}/index.js +2 -2
- package/dist/server/compress/index.js.map +1 -0
- package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
- package/dist/server/cookies/index.browser.js.map +1 -0
- package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
- package/dist/{server-cookies → server/cookies}/index.js +9 -5
- package/dist/server/cookies/index.js.map +1 -0
- package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
- package/dist/server/core/index.browser.js.map +1 -0
- package/dist/server/{index.d.ts → core/index.d.ts} +46 -37
- package/dist/server/{index.js → core/index.js} +47 -33
- package/dist/server/core/index.js.map +1 -0
- package/dist/{server-cors → server/cors}/index.d.ts +3 -3
- package/dist/{server-cors → server/cors}/index.js +3 -3
- package/dist/server/cors/index.js.map +1 -0
- package/dist/{server-health → server/health}/index.d.ts +3 -3
- package/dist/{server-health → server/health}/index.js +3 -3
- package/dist/server/health/index.js.map +1 -0
- package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
- package/dist/{server-helmet → server/helmet}/index.js +2 -2
- package/dist/server/helmet/index.js.map +1 -0
- package/dist/{server-links → server/links}/index.browser.js +5 -5
- package/dist/server/links/index.browser.js.map +1 -0
- package/dist/{server-links → server/links}/index.d.ts +40 -40
- package/dist/{server-links → server/links}/index.js +7 -7
- package/dist/server/links/index.js.map +1 -0
- package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
- package/dist/server/metrics/index.js +74 -0
- package/dist/server/metrics/index.js.map +1 -0
- package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
- package/dist/{server-multipart → server/multipart}/index.js +2 -2
- package/dist/server/multipart/index.js.map +1 -0
- package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
- package/dist/{server-proxy → server/proxy}/index.js +3 -3
- package/dist/server/proxy/index.js.map +1 -0
- package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
- package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
- package/dist/server/rate-limit/index.js.map +1 -0
- package/dist/{server-security → server/security}/index.browser.js +1 -1
- package/dist/server/security/index.browser.js.map +1 -0
- package/dist/{server-security → server/security}/index.d.ts +4 -4
- package/dist/{server-security → server/security}/index.js +4 -4
- package/dist/server/security/index.js.map +1 -0
- package/dist/{server-static → server/static}/index.d.ts +3 -3
- package/dist/{server-static → server/static}/index.js +3 -3
- package/dist/server/static/index.js.map +1 -0
- package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
- package/dist/{server-swagger → server/swagger}/index.js +4 -4
- package/dist/server/swagger/index.js.map +1 -0
- package/dist/thread/index.js +2 -2
- package/dist/thread/index.js.map +1 -1
- package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
- package/dist/topic/{index.js → core/index.js} +6 -6
- package/dist/topic/core/index.js.map +1 -0
- package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
- package/dist/{topic-redis → topic/redis}/index.js +2 -2
- package/dist/topic/redis/index.js.map +1 -0
- package/dist/vite/index.d.ts +13 -2
- package/dist/vite/index.js +114 -50
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +3 -3
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.js +4 -4
- package/dist/websocket/index.js.map +1 -1
- package/package.json +160 -156
- package/src/api/audits/controllers/AuditController.ts +186 -0
- package/src/api/audits/entities/audits.ts +132 -0
- package/src/api/audits/index.browser.ts +18 -0
- package/src/api/audits/index.ts +58 -0
- package/src/api/audits/primitives/$audit.ts +159 -0
- package/src/api/audits/schemas/auditQuerySchema.ts +23 -0
- package/src/api/audits/schemas/auditResourceSchema.ts +9 -0
- package/src/api/audits/schemas/createAuditSchema.ts +27 -0
- package/src/api/audits/services/AuditService.ts +412 -0
- package/src/{api-files → api/files}/index.ts +1 -0
- package/src/api/parameters/controllers/ConfigController.ts +324 -0
- package/src/api/parameters/entities/parameters.ts +113 -0
- package/src/api/parameters/index.ts +60 -0
- package/src/api/parameters/primitives/$config.ts +351 -0
- package/src/api/parameters/schedulers/ConfigActivationScheduler.ts +30 -0
- package/src/api/parameters/services/ConfigStore.ts +491 -0
- package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +19 -0
- package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -2
- package/src/{api-users → api/users}/index.ts +2 -0
- package/src/{api-users → api/users}/primitives/$userRealm.ts +18 -3
- package/src/{api-users → api/users}/providers/UserRealmProvider.ts +12 -10
- package/src/{api-users → api/users}/services/RegistrationService.ts +2 -1
- package/src/{api-users → api/users}/services/SessionService.ts +4 -0
- package/src/{api-users → api/users}/services/UserService.ts +3 -0
- package/src/{api-verifications → api/verifications}/index.ts +9 -1
- package/src/bin/index.ts +1 -0
- package/src/cli/apps/AlephaPackageBuilderCli.ts +73 -48
- package/src/cli/assets/appRouterTs.ts +1 -1
- package/src/cli/assets/biomeJson.ts +2 -2
- package/src/cli/assets/dummySpecTs.ts +7 -0
- package/src/cli/assets/editorconfig.ts +13 -0
- package/src/cli/assets/indexHtml.ts +1 -1
- package/src/cli/assets/mainBrowserTs.ts +1 -1
- package/src/cli/assets/mainTs.ts +14 -0
- package/src/cli/assets/viteConfigTs.ts +1 -1
- package/src/cli/commands/BiomeCommands.ts +2 -0
- package/src/cli/commands/CoreCommands.ts +38 -15
- package/src/cli/commands/VerifyCommands.ts +6 -2
- package/src/cli/commands/ViteCommands.ts +28 -18
- package/src/cli/services/AlephaCliUtils.ts +243 -37
- package/src/command/helpers/Asker.ts +0 -1
- package/src/command/primitives/$command.ts +67 -0
- package/src/command/providers/CliProvider.ts +39 -8
- package/src/core/Alepha.ts +40 -30
- package/src/core/helpers/jsonSchemaToTypeBox.ts +307 -0
- package/src/core/index.shared.ts +1 -0
- package/src/core/index.ts +30 -3
- package/src/core/providers/EventManager.ts +1 -1
- package/src/core/providers/SchemaValidator.ts +1 -1
- package/src/core/providers/StateManager.ts +23 -12
- package/src/core/providers/TypeProvider.ts +26 -34
- package/src/logger/index.ts +8 -6
- package/src/logger/primitives/$logger.ts +1 -1
- package/src/logger/providers/{SimpleFormatterProvider.ts → PrettyFormatterProvider.ts} +10 -1
- package/src/orm/index.ts +6 -0
- package/src/orm/services/PgRelationManager.ts +2 -2
- package/src/orm/services/PostgresModelBuilder.ts +11 -7
- package/src/orm/services/Repository.ts +16 -7
- package/src/orm/services/SqliteModelBuilder.ts +10 -0
- package/src/queue/{index.ts → core/index.ts} +2 -3
- package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
- package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
- package/src/queue/core/providers/QueueProvider.ts +23 -0
- package/src/queue/core/providers/WorkerProvider.ts +244 -0
- package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
- package/src/{server-auth → server/auth}/primitives/$auth.ts +7 -0
- package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +51 -8
- package/src/{server-cookies → server/cookies}/index.ts +2 -1
- package/src/server/{index.ts → core/index.ts} +7 -0
- package/src/server/{primitives → core/primitives}/$action.ts +10 -1
- package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +11 -5
- package/src/server/{providers → core/providers}/ServerRouterProvider.ts +13 -7
- package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
- package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
- package/src/thread/primitives/$thread.ts +2 -2
- package/src/vite/index.ts +0 -2
- package/src/vite/tasks/buildServer.ts +3 -4
- package/src/vite/tasks/copyAssets.ts +32 -8
- package/src/vite/tasks/generateCloudflare.ts +35 -19
- package/src/vite/tasks/generateDocker.ts +18 -4
- package/src/vite/tasks/generateSitemap.ts +5 -7
- package/src/vite/tasks/generateVercel.ts +76 -41
- package/src/vite/tasks/runAlepha.ts +16 -1
- package/src/websocket/providers/NodeWebSocketServerProvider.ts +3 -11
- package/src/websocket/services/WebSocketClient.ts +3 -3
- package/dist/api-files/index.browser.js.map +0 -1
- package/dist/api-files/index.js.map +0 -1
- package/dist/api-jobs/index.browser.js.map +0 -1
- package/dist/api-jobs/index.js.map +0 -1
- package/dist/api-notifications/index.browser.js.map +0 -1
- package/dist/api-notifications/index.d.ts +0 -327
- package/dist/api-notifications/index.js.map +0 -1
- package/dist/api-parameters/index.browser.js +0 -29
- package/dist/api-parameters/index.browser.js.map +0 -1
- package/dist/api-parameters/index.d.ts +0 -83
- package/dist/api-parameters/index.js +0 -63
- package/dist/api-parameters/index.js.map +0 -1
- package/dist/api-users/index.browser.js.map +0 -1
- package/dist/api-users/index.js.map +0 -1
- package/dist/api-verifications/index.browser.js.map +0 -1
- package/dist/api-verifications/index.d.ts +0 -229
- package/dist/api-verifications/index.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache-redis/index.js.map +0 -1
- package/dist/cli/dist-BlfFtOk2.js +0 -2770
- package/dist/cli/dist-BlfFtOk2.js.map +0 -1
- package/dist/lock/index.js.map +0 -1
- package/dist/lock-redis/index.js.map +0 -1
- package/dist/queue/index.d.ts +0 -1265
- package/dist/queue/index.js +0 -1037
- package/dist/queue/index.js.map +0 -1
- package/dist/queue-redis/index.d.ts +0 -82
- package/dist/queue-redis/index.js +0 -872
- package/dist/queue-redis/index.js.map +0 -1
- package/dist/server/index.browser.js.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server-auth/index.browser.js.map +0 -1
- package/dist/server-auth/index.js +0 -1943
- package/dist/server-auth/index.js.map +0 -1
- package/dist/server-cache/index.js.map +0 -1
- package/dist/server-compress/index.js.map +0 -1
- package/dist/server-cookies/index.browser.js.map +0 -1
- package/dist/server-cookies/index.js.map +0 -1
- package/dist/server-cors/index.js.map +0 -1
- package/dist/server-health/index.js.map +0 -1
- package/dist/server-helmet/index.js.map +0 -1
- package/dist/server-links/index.browser.js.map +0 -1
- package/dist/server-links/index.js.map +0 -1
- package/dist/server-metrics/index.js +0 -4532
- package/dist/server-metrics/index.js.map +0 -1
- package/dist/server-multipart/index.js.map +0 -1
- package/dist/server-proxy/index.js.map +0 -1
- package/dist/server-rate-limit/index.js.map +0 -1
- package/dist/server-security/index.browser.js.map +0 -1
- package/dist/server-security/index.js.map +0 -1
- package/dist/server-static/index.js.map +0 -1
- package/dist/server-swagger/index.js.map +0 -1
- package/dist/topic/index.js.map +0 -1
- package/dist/topic-redis/index.js.map +0 -1
- package/src/api-parameters/controllers/ParameterController.ts +0 -45
- package/src/api-parameters/entities/parameters.ts +0 -30
- package/src/api-parameters/index.ts +0 -21
- package/src/api-parameters/primitives/$config.ts +0 -79
- package/src/api-parameters/services/ParameterStore.ts +0 -23
- package/src/queue/interfaces/QueueJob.ts +0 -459
- package/src/queue/providers/MemoryQueueProvider.ts +0 -850
- package/src/queue/providers/QueueProvider.ts +0 -319
- package/src/queue/providers/WorkerProvider.ts +0 -344
- package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
- /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
- /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
- /package/src/{api-files → api/files}/entities/files.ts +0 -0
- /package/src/{api-files → api/files}/index.browser.ts +0 -0
- /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
- /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
- /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
- /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
- /package/src/{api-files → api/files}/services/FileService.ts +0 -0
- /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
- /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
- /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
- /package/src/{api-jobs → api/jobs}/index.ts +0 -0
- /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
- /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
- /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
- /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
- /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
- /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
- /package/src/{api-notifications → api/notifications}/index.ts +0 -0
- /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
- /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
- /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
- /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
- /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
- /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
- /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
- /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
- /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
- /package/src/{api-users → api/users}/entities/identities.ts +0 -0
- /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
- /package/src/{api-users → api/users}/entities/users.ts +0 -0
- /package/src/{api-users → api/users}/index.browser.ts +0 -0
- /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
- /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
- /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
- /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
- /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
- /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
- /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
- /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
- /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
- /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
- /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
- /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
- /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
- /package/src/cache/{index.ts → core/index.ts} +0 -0
- /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
- /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
- /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
- /package/src/{cache-redis → cache/redis}/index.ts +0 -0
- /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
- /package/src/lock/{index.ts → core/index.ts} +0 -0
- /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
- /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
- /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
- /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
- /package/src/{lock-redis → lock/redis}/index.ts +0 -0
- /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
- /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
- /package/src/{queue-redis → queue/redis}/index.ts +0 -0
- /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
- /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
- /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
- /package/src/{server-auth → server/auth}/index.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
- /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
- /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
- /package/src/{server-cache → server/cache}/index.ts +0 -0
- /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
- /package/src/{server-compress → server/compress}/index.ts +0 -0
- /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
- /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
- /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
- /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
- /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
- /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
- /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
- /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
- /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
- /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
- /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
- /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
- /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
- /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
- /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
- /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
- /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
- /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
- /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
- /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
- /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
- /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
- /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
- /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
- /package/src/server/{services → core/services}/HttpClient.ts +0 -0
- /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
- /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
- /package/src/{server-cors → server/cors}/index.ts +0 -0
- /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
- /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
- /package/src/{server-health → server/health}/index.ts +0 -0
- /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
- /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
- /package/src/{server-helmet → server/helmet}/index.ts +0 -0
- /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
- /package/src/{server-links → server/links}/index.browser.ts +0 -0
- /package/src/{server-links → server/links}/index.ts +0 -0
- /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
- /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
- /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
- /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
- /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
- /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
- /package/src/{server-metrics → server/metrics}/index.ts +0 -0
- /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
- /package/src/{server-multipart → server/multipart}/index.ts +0 -0
- /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
- /package/src/{server-proxy → server/proxy}/index.ts +0 -0
- /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
- /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
- /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
- /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
- /package/src/{server-security → server/security}/index.browser.ts +0 -0
- /package/src/{server-security → server/security}/index.ts +0 -0
- /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
- /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
- /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
- /package/src/{server-static → server/static}/index.ts +0 -0
- /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
- /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
- /package/src/{server-swagger → server/swagger}/index.ts +0 -0
- /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
- /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
- /package/src/topic/{index.ts → core/index.ts} +0 -0
- /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
- /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
- /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
- /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
- /package/src/{topic-redis → topic/redis}/index.ts +0 -0
- /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
package/dist/cli/index.js
CHANGED
|
@@ -36,7 +36,7 @@ const biomeJson = `
|
|
|
36
36
|
},
|
|
37
37
|
"formatter": {
|
|
38
38
|
"enabled": true,
|
|
39
|
-
"
|
|
39
|
+
"useEditorconfig": true
|
|
40
40
|
},
|
|
41
41
|
"linter": {
|
|
42
42
|
"enabled": true,
|
|
@@ -57,6 +57,32 @@ const biomeJson = `
|
|
|
57
57
|
}
|
|
58
58
|
`.trim();
|
|
59
59
|
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region ../../src/cli/assets/dummySpecTs.ts
|
|
62
|
+
const dummySpecTs = () => `
|
|
63
|
+
import { test, expect } from "vitest";
|
|
64
|
+
|
|
65
|
+
test("dummy test", () => {
|
|
66
|
+
expect(1 + 1).toBe(2);
|
|
67
|
+
});
|
|
68
|
+
`.trim();
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region ../../src/cli/assets/editorconfig.ts
|
|
72
|
+
const editorconfig = `
|
|
73
|
+
# https://editorconfig.org
|
|
74
|
+
|
|
75
|
+
root = true
|
|
76
|
+
|
|
77
|
+
[*]
|
|
78
|
+
charset = utf-8
|
|
79
|
+
end_of_line = lf
|
|
80
|
+
insert_final_newline = true
|
|
81
|
+
trim_trailing_whitespace = true
|
|
82
|
+
indent_style = space
|
|
83
|
+
indent_size = 2
|
|
84
|
+
`.trim();
|
|
85
|
+
|
|
60
86
|
//#endregion
|
|
61
87
|
//#region ../../src/cli/assets/indexHtml.ts
|
|
62
88
|
const indexHtml = (browserEntry) => `
|
|
@@ -86,6 +112,23 @@ alepha.with(AppRouter);
|
|
|
86
112
|
run(alepha);
|
|
87
113
|
`.trim();
|
|
88
114
|
|
|
115
|
+
//#endregion
|
|
116
|
+
//#region ../../src/cli/assets/mainTs.ts
|
|
117
|
+
const mainTs = () => `
|
|
118
|
+
import { Alepha, run } from "alepha";
|
|
119
|
+
import { $logger } from "alepha/logger";
|
|
120
|
+
|
|
121
|
+
const alepha = Alepha.create();
|
|
122
|
+
|
|
123
|
+
alepha.with(() => {
|
|
124
|
+
const log = $logger();
|
|
125
|
+
|
|
126
|
+
log.info("Hello from Alepha!");
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
run(alepha);
|
|
130
|
+
`.trim();
|
|
131
|
+
|
|
89
132
|
//#endregion
|
|
90
133
|
//#region ../../src/cli/assets/tsconfigJson.ts
|
|
91
134
|
const tsconfigJson = `
|
|
@@ -132,34 +175,39 @@ var AlephaCliUtils = class {
|
|
|
132
175
|
/**
|
|
133
176
|
* Execute a command using npx with inherited stdio.
|
|
134
177
|
*
|
|
135
|
-
* @param command - The command to execute (will be passed to npx)
|
|
136
|
-
* @param env - Optional environment variables to set for the command
|
|
137
|
-
* @returns Promise that resolves when the process exits
|
|
138
|
-
*
|
|
139
178
|
* @example
|
|
140
179
|
* ```ts
|
|
141
180
|
* const runner = alepha.inject(ProcessRunner);
|
|
142
181
|
* await runner.exec("tsx watch src/index.ts");
|
|
143
182
|
* ```
|
|
144
183
|
*/
|
|
145
|
-
async exec(command,
|
|
184
|
+
async exec(command, options = {}) {
|
|
146
185
|
const root = process.cwd();
|
|
147
186
|
this.log.debug(`Executing command: ${command}`, { cwd: root });
|
|
187
|
+
const runExec = async (app$1, args$1) => {
|
|
188
|
+
const prog = spawn(app$1, args$1, {
|
|
189
|
+
stdio: "inherit",
|
|
190
|
+
cwd: root,
|
|
191
|
+
env: {
|
|
192
|
+
...process.env,
|
|
193
|
+
...options.env
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
await new Promise((resolve) => prog.on("exit", () => {
|
|
197
|
+
resolve();
|
|
198
|
+
}));
|
|
199
|
+
};
|
|
200
|
+
if (options.global) {
|
|
201
|
+
const [app$1, ...args$1] = command.split(" ");
|
|
202
|
+
await runExec(app$1, args$1);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
148
205
|
const suffix = process.platform === "win32" ? ".cmd" : "";
|
|
149
206
|
const [app, ...args] = command.split(" ");
|
|
150
|
-
|
|
207
|
+
let execPath = await this.checkFileExists(root, `node_modules/.bin/${app}${suffix}`, true);
|
|
208
|
+
if (!execPath) execPath = await this.checkFileExists(root, `node_modules/alepha/node_modules/.bin/${app}${suffix}`, true);
|
|
151
209
|
if (!execPath) throw new AlephaError(`Could not find executable for command '${app}'. Make sure the package is installed.`);
|
|
152
|
-
|
|
153
|
-
stdio: "inherit",
|
|
154
|
-
cwd: root,
|
|
155
|
-
env: {
|
|
156
|
-
...process.env,
|
|
157
|
-
...env
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
await new Promise((resolve) => prog.on("exit", () => {
|
|
161
|
-
resolve();
|
|
162
|
-
}));
|
|
210
|
+
await runExec(execPath, args);
|
|
163
211
|
}
|
|
164
212
|
/**
|
|
165
213
|
* Write a configuration file to node_modules/.alepha directory.
|
|
@@ -197,6 +245,24 @@ var AlephaCliUtils = class {
|
|
|
197
245
|
await this.fs.rm(join(root, "package-lock.json"), { force: true });
|
|
198
246
|
await this.fs.rm(join(root, "pnpm-lock.yaml"), { force: true });
|
|
199
247
|
}
|
|
248
|
+
async ensurePnpm(root) {
|
|
249
|
+
await this.fs.rm(join(root, "package-lock.json"), { force: true });
|
|
250
|
+
await this.fs.rm(join(root, "yarn.lock"), { force: true });
|
|
251
|
+
await this.fs.rm(join(root, ".yarn"), {
|
|
252
|
+
force: true,
|
|
253
|
+
recursive: true
|
|
254
|
+
});
|
|
255
|
+
await this.fs.rm(join(root, ".yarnrc.yml"), { force: true });
|
|
256
|
+
}
|
|
257
|
+
async ensureNpm(root) {
|
|
258
|
+
await this.fs.rm(join(root, "pnpm-lock.yaml"), { force: true });
|
|
259
|
+
await this.fs.rm(join(root, "yarn.lock"), { force: true });
|
|
260
|
+
await this.fs.rm(join(root, ".yarn"), {
|
|
261
|
+
force: true,
|
|
262
|
+
recursive: true
|
|
263
|
+
});
|
|
264
|
+
await this.fs.rm(join(root, ".yarnrc.yml"), { force: true });
|
|
265
|
+
}
|
|
200
266
|
/**
|
|
201
267
|
* Generate package.json content with Alepha dependencies.
|
|
202
268
|
*
|
|
@@ -206,6 +272,13 @@ var AlephaCliUtils = class {
|
|
|
206
272
|
generatePackageJsonContent(modes) {
|
|
207
273
|
const dependencies = { alepha: `^${version}` };
|
|
208
274
|
const devDependencies = {};
|
|
275
|
+
const scripts = {
|
|
276
|
+
dev: "alepha dev",
|
|
277
|
+
build: "alepha build",
|
|
278
|
+
lint: "alepha lint",
|
|
279
|
+
typecheck: "alepha typecheck",
|
|
280
|
+
verify: "alepha verify"
|
|
281
|
+
};
|
|
209
282
|
if (modes.ui) {
|
|
210
283
|
dependencies["@alepha/ui"] = `^${version}`;
|
|
211
284
|
modes.react = true;
|
|
@@ -220,11 +293,7 @@ var AlephaCliUtils = class {
|
|
|
220
293
|
type: "module",
|
|
221
294
|
dependencies,
|
|
222
295
|
devDependencies,
|
|
223
|
-
scripts
|
|
224
|
-
dev: "alepha dev",
|
|
225
|
-
build: "alepha build",
|
|
226
|
-
verify: "alepha verify"
|
|
227
|
-
}
|
|
296
|
+
scripts
|
|
228
297
|
};
|
|
229
298
|
}
|
|
230
299
|
/**
|
|
@@ -243,8 +312,9 @@ var AlephaCliUtils = class {
|
|
|
243
312
|
try {
|
|
244
313
|
await access(packageJsonPath);
|
|
245
314
|
} catch (error) {
|
|
246
|
-
|
|
247
|
-
|
|
315
|
+
const obj = this.generatePackageJsonContent(modes);
|
|
316
|
+
await writeFile(packageJsonPath, JSON.stringify(obj, null, 2));
|
|
317
|
+
return obj;
|
|
248
318
|
}
|
|
249
319
|
const content = await readFile(packageJsonPath, "utf8");
|
|
250
320
|
const packageJson$1 = JSON.parse(content);
|
|
@@ -257,6 +327,7 @@ var AlephaCliUtils = class {
|
|
|
257
327
|
Object.assign(packageJson$1.devDependencies, newPackageJson.devDependencies);
|
|
258
328
|
Object.assign(packageJson$1.scripts, newPackageJson.scripts);
|
|
259
329
|
await writeFile(packageJsonPath, JSON.stringify(packageJson$1, null, 2));
|
|
330
|
+
return packageJson$1;
|
|
260
331
|
}
|
|
261
332
|
async ensureConfig(root, opts) {
|
|
262
333
|
const tasks = [];
|
|
@@ -265,7 +336,8 @@ var AlephaCliUtils = class {
|
|
|
265
336
|
if (opts.viteConfigTs) tasks.push(this.ensureViteConfig(root));
|
|
266
337
|
if (opts.indexHtml) tasks.push(this.ensureIndexHtml(root));
|
|
267
338
|
if (opts.biomeJson) tasks.push(this.ensureBiomeConfig(root));
|
|
268
|
-
|
|
339
|
+
if (opts.editorconfig) tasks.push(this.ensureEditorConfig(root));
|
|
340
|
+
return await Promise.all(tasks);
|
|
269
341
|
}
|
|
270
342
|
/**
|
|
271
343
|
* Ensure tsconfig.json exists in the project.
|
|
@@ -321,6 +393,16 @@ var AlephaCliUtils = class {
|
|
|
321
393
|
await this.ensureFileExists(root, "biome.json", biomeJson, true);
|
|
322
394
|
}
|
|
323
395
|
/**
|
|
396
|
+
* Ensure .editorconfig exists in the project.
|
|
397
|
+
*
|
|
398
|
+
* Creates a standard .editorconfig if none exists.
|
|
399
|
+
*
|
|
400
|
+
* @param root - The root directory of the project
|
|
401
|
+
*/
|
|
402
|
+
async ensureEditorConfig(root) {
|
|
403
|
+
await this.ensureFileExists(root, ".editorconfig", editorconfig, true);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
324
406
|
* Load Alepha instance from a server entry file.
|
|
325
407
|
*
|
|
326
408
|
* Dynamically imports the server entry file and extracts the Alepha instance.
|
|
@@ -454,10 +536,14 @@ ${models.map((it) => `export const ${it} = models["${it}"];`).join("\n")}
|
|
|
454
536
|
rootDir
|
|
455
537
|
});
|
|
456
538
|
const flags = options.commandFlags ? ` ${options.commandFlags}` : "";
|
|
457
|
-
await this.exec(`drizzle-kit ${options.command} --config=${drizzleConfigJsPath}${flags}`, { NODE_OPTIONS: "--import tsx" });
|
|
539
|
+
await this.exec(`drizzle-kit ${options.command} --config=${drizzleConfigJsPath}${flags}`, { env: { NODE_OPTIONS: "--import tsx" } });
|
|
458
540
|
}
|
|
459
541
|
}
|
|
460
|
-
async getPackageManager(root) {
|
|
542
|
+
async getPackageManager(root, flags) {
|
|
543
|
+
if (flags?.yarn) return "yarn";
|
|
544
|
+
if (flags?.pnpm) return "pnpm";
|
|
545
|
+
if (flags?.npm) return "npm";
|
|
546
|
+
if (flags?.bun) return "bun";
|
|
461
547
|
if (await this.checkFileExists(root, "yarn.lock", true)) return "yarn";
|
|
462
548
|
if (await this.checkFileExists(root, "pnpm-lock.yaml", true)) return "pnpm";
|
|
463
549
|
return "npm";
|
|
@@ -478,10 +564,100 @@ ${models.map((it) => `export const ${it} = models["${it}"];`).join("\n")}
|
|
|
478
564
|
async exists(root, dirName) {
|
|
479
565
|
return this.fs.exists(join(root, dirName));
|
|
480
566
|
}
|
|
567
|
+
/**
|
|
568
|
+
* Ensure src/main.ts exists with a minimal Alepha bootstrap.
|
|
569
|
+
*
|
|
570
|
+
* Creates the src directory and main.ts file if the src directory
|
|
571
|
+
* doesn't exist or is empty.
|
|
572
|
+
*
|
|
573
|
+
* @param root - The root directory of the project
|
|
574
|
+
*/
|
|
575
|
+
async ensureSrcMain(root) {
|
|
576
|
+
const srcDir = join(root, "src");
|
|
577
|
+
const mainPath = join(srcDir, "main.ts");
|
|
578
|
+
if (!await this.fs.exists(srcDir)) {
|
|
579
|
+
await this.fs.mkdir(srcDir, { recursive: true });
|
|
580
|
+
await this.fs.writeFile(mainPath, mainTs());
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
if ((await this.fs.ls(srcDir)).length === 0) await this.fs.writeFile(mainPath, mainTs());
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Ensure test directory exists with a dummy test file.
|
|
587
|
+
*
|
|
588
|
+
* Creates the test directory and a dummy.spec.ts file if the test directory
|
|
589
|
+
* doesn't exist or is empty.
|
|
590
|
+
*
|
|
591
|
+
* @param root - The root directory of the project
|
|
592
|
+
*/
|
|
593
|
+
async ensureTestDir(root) {
|
|
594
|
+
const testDir = join(root, "test");
|
|
595
|
+
const dummyPath = join(testDir, "dummy.spec.ts");
|
|
596
|
+
if (!await this.fs.exists(testDir)) {
|
|
597
|
+
await this.fs.mkdir(testDir, { recursive: true });
|
|
598
|
+
await this.fs.writeFile(dummyPath, dummySpecTs());
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
if ((await this.fs.ls(testDir)).length === 0) await this.fs.writeFile(dummyPath, dummySpecTs());
|
|
602
|
+
}
|
|
481
603
|
async readPackageJson(root) {
|
|
482
604
|
const packageJson$1 = await this.fs.createFile({ path: join(root, "package.json") }).text();
|
|
483
605
|
return JSON.parse(packageJson$1);
|
|
484
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* Check if a dependency is installed in the project.
|
|
609
|
+
*
|
|
610
|
+
* @param root - The root directory of the project
|
|
611
|
+
* @param packageName - The name of the package to check
|
|
612
|
+
* @returns True if the package is in dependencies or devDependencies
|
|
613
|
+
*/
|
|
614
|
+
async hasDependency(root, packageName) {
|
|
615
|
+
try {
|
|
616
|
+
const pkg = await this.readPackageJson(root);
|
|
617
|
+
return !!(pkg.dependencies?.[packageName] || pkg.devDependencies?.[packageName]);
|
|
618
|
+
} catch {
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Check if Expo is present in the project.
|
|
624
|
+
*
|
|
625
|
+
* @param root - The root directory of the project
|
|
626
|
+
* @returns True if expo is in dependencies or devDependencies
|
|
627
|
+
*/
|
|
628
|
+
async hasExpo(root) {
|
|
629
|
+
return this.hasDependency(root, "expo");
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* Install a dependency if it's missing from the project.
|
|
633
|
+
*
|
|
634
|
+
* Automatically detects the package manager (yarn, pnpm, npm) and installs
|
|
635
|
+
* the package as a dev dependency if not already present.
|
|
636
|
+
*/
|
|
637
|
+
async ensureDependency(root, packageName, options = {}) {
|
|
638
|
+
const { dev = true } = options;
|
|
639
|
+
if (await this.hasDependency(root, packageName)) {
|
|
640
|
+
this.log.debug(`Dependency '${packageName}' is already installed`);
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
const pm = await this.getPackageManager(root);
|
|
644
|
+
let cmd;
|
|
645
|
+
switch (pm) {
|
|
646
|
+
case "yarn":
|
|
647
|
+
cmd = `yarn add ${dev ? "-D" : ""} ${packageName}`;
|
|
648
|
+
break;
|
|
649
|
+
case "pnpm":
|
|
650
|
+
cmd = `pnpm add ${dev ? "-D" : ""} ${packageName}`;
|
|
651
|
+
break;
|
|
652
|
+
default: cmd = `npm install ${dev ? "--save-dev" : ""} ${packageName}`;
|
|
653
|
+
}
|
|
654
|
+
cmd = cmd.replace(/\s+/g, " ").trim();
|
|
655
|
+
if (options.run) await options.run(cmd, { alias: `installing ${packageName}` });
|
|
656
|
+
else {
|
|
657
|
+
this.log.debug(`Installing ${packageName}`);
|
|
658
|
+
await this.exec(cmd, { global: true });
|
|
659
|
+
}
|
|
660
|
+
}
|
|
485
661
|
};
|
|
486
662
|
|
|
487
663
|
//#endregion
|
|
@@ -494,6 +670,7 @@ var BiomeCommands = class {
|
|
|
494
670
|
description: "Format the codebase using Biome",
|
|
495
671
|
handler: async ({ root }) => {
|
|
496
672
|
await this.utils.ensureConfig(root, { biomeJson: true });
|
|
673
|
+
await this.utils.ensureDependency(root, "@biomejs/biome");
|
|
497
674
|
await this.utils.exec(`biome format --fix`);
|
|
498
675
|
}
|
|
499
676
|
});
|
|
@@ -502,6 +679,7 @@ var BiomeCommands = class {
|
|
|
502
679
|
description: "Run linter across the codebase using Biome",
|
|
503
680
|
handler: async ({ root }) => {
|
|
504
681
|
await this.utils.ensureConfig(root, { biomeJson: true });
|
|
682
|
+
await this.utils.ensureDependency(root, "@biomejs/biome");
|
|
505
683
|
await this.utils.exec(`biome check --formatter-enabled=false --fix`);
|
|
506
684
|
}
|
|
507
685
|
});
|
|
@@ -550,29 +728,42 @@ var CoreCommands = class {
|
|
|
550
728
|
flags: t.object({
|
|
551
729
|
yarn: t.optional(t.boolean({ description: "Use Yarn package manager" })),
|
|
552
730
|
pnpm: t.optional(t.boolean({ description: "Use pnpm package manager" })),
|
|
731
|
+
npm: t.optional(t.boolean({ description: "Use npm package manager" })),
|
|
732
|
+
bun: t.optional(t.boolean({ description: "Use Bun package manager" })),
|
|
553
733
|
react: t.optional(t.boolean({ description: "Include Alepha React dependencies" })),
|
|
554
|
-
ui: t.optional(t.boolean({ description: "Include Alepha UI dependencies" }))
|
|
734
|
+
ui: t.optional(t.boolean({ description: "Include Alepha UI dependencies" })),
|
|
735
|
+
test: t.optional(t.boolean({ description: "Include Vitest and create test directory" }))
|
|
555
736
|
}),
|
|
556
737
|
handler: async ({ run, flags, root }) => {
|
|
557
738
|
if (flags.ui) flags.react = true;
|
|
739
|
+
const isExpo = await this.utils.hasExpo(root);
|
|
558
740
|
await run({
|
|
559
|
-
name: "
|
|
741
|
+
name: "ensuring configuration files",
|
|
560
742
|
handler: async () => {
|
|
561
743
|
await this.utils.ensureConfig(root, {
|
|
562
744
|
tsconfigJson: true,
|
|
563
745
|
packageJson: flags,
|
|
564
746
|
biomeJson: true,
|
|
565
|
-
viteConfigTs:
|
|
566
|
-
|
|
747
|
+
viteConfigTs: !isExpo,
|
|
748
|
+
editorconfig: true,
|
|
749
|
+
indexHtml: !!flags.react && !isExpo
|
|
567
750
|
});
|
|
751
|
+
if (!flags.react) await this.utils.ensureSrcMain(root);
|
|
568
752
|
}
|
|
569
753
|
});
|
|
570
|
-
const
|
|
571
|
-
if (
|
|
754
|
+
const pm = await this.utils.getPackageManager(root, flags);
|
|
755
|
+
if (pm === "yarn") {
|
|
572
756
|
await this.utils.ensureYarn(root);
|
|
573
757
|
await run("yarn set version stable");
|
|
574
|
-
|
|
575
|
-
|
|
758
|
+
} else if (pm === "pnpm") await this.utils.ensurePnpm(root);
|
|
759
|
+
else await this.utils.ensureNpm(root);
|
|
760
|
+
await run(`${pm} install`, { alias: `installing dependencies with ${pm}` });
|
|
761
|
+
if (!isExpo) await this.utils.ensureDependency(root, "vite", { run });
|
|
762
|
+
await this.utils.ensureDependency(root, "@biomejs/biome", { run });
|
|
763
|
+
if (flags.test) {
|
|
764
|
+
await this.utils.ensureTestDir(root);
|
|
765
|
+
await run(`${pm} ${pm === "yarn" ? "add" : "install"} -D vitest`, { alias: "setup testing with Vitest" });
|
|
766
|
+
}
|
|
576
767
|
}
|
|
577
768
|
});
|
|
578
769
|
};
|
|
@@ -784,7 +975,7 @@ var VerifyCommands = class {
|
|
|
784
975
|
await run("alepha typecheck");
|
|
785
976
|
if ((await this.utils.readPackageJson(root)).devDependencies?.vitest) await run("alepha test");
|
|
786
977
|
if (await this.utils.exists(root, "migrations")) await run("alepha db:check-migrations");
|
|
787
|
-
await run("alepha build");
|
|
978
|
+
if (!await this.utils.hasExpo(root)) await run("alepha build");
|
|
788
979
|
await run("alepha clean");
|
|
789
980
|
}
|
|
790
981
|
});
|
|
@@ -794,7 +985,8 @@ var VerifyCommands = class {
|
|
|
794
985
|
typecheck = $command({
|
|
795
986
|
name: "typecheck",
|
|
796
987
|
description: "Check TypeScript types across the codebase",
|
|
797
|
-
handler: async () => {
|
|
988
|
+
handler: async ({ root }) => {
|
|
989
|
+
await this.utils.ensureDependency(root, "typescript");
|
|
798
990
|
await this.utils.exec("tsc --noEmit");
|
|
799
991
|
}
|
|
800
992
|
});
|
|
@@ -808,6 +1000,7 @@ var ViteCommands = class {
|
|
|
808
1000
|
env = $env(t.object({ VITEST_ARGS: t.string({ default: "" }) }));
|
|
809
1001
|
run = $command({
|
|
810
1002
|
name: "run",
|
|
1003
|
+
hide: true,
|
|
811
1004
|
description: "Run a TypeScript file directly",
|
|
812
1005
|
flags: t.object({ watch: t.optional(t.boolean({
|
|
813
1006
|
description: "Watch file for changes",
|
|
@@ -837,10 +1030,15 @@ var ViteCommands = class {
|
|
|
837
1030
|
description: "Filepath to run"
|
|
838
1031
|
})),
|
|
839
1032
|
handler: async ({ args, root }) => {
|
|
1033
|
+
const expo = await this.utils.hasExpo(root);
|
|
840
1034
|
await this.utils.ensureConfig(root, {
|
|
841
|
-
viteConfigTs:
|
|
1035
|
+
viteConfigTs: !expo,
|
|
842
1036
|
tsconfigJson: true
|
|
843
1037
|
});
|
|
1038
|
+
if (expo) {
|
|
1039
|
+
await this.utils.exec(`expo start`);
|
|
1040
|
+
return;
|
|
1041
|
+
}
|
|
844
1042
|
const entry = await boot.getServerEntry(root, args);
|
|
845
1043
|
this.log.trace("Entry file found", { entry });
|
|
846
1044
|
try {
|
|
@@ -853,6 +1051,7 @@ var ViteCommands = class {
|
|
|
853
1051
|
await this.utils.exec(cmd);
|
|
854
1052
|
return;
|
|
855
1053
|
}
|
|
1054
|
+
await this.utils.ensureDependency(root, "vite");
|
|
856
1055
|
await this.utils.exec(`vite`);
|
|
857
1056
|
}
|
|
858
1057
|
});
|
|
@@ -873,6 +1072,7 @@ var ViteCommands = class {
|
|
|
873
1072
|
}),
|
|
874
1073
|
handler: async ({ flags, args, run, root }) => {
|
|
875
1074
|
process.env.ALEPHA_BUILD_MODE = "cli";
|
|
1075
|
+
if (await this.utils.hasExpo(root)) return;
|
|
876
1076
|
await this.utils.ensureConfig(root, {
|
|
877
1077
|
viteConfigTs: true,
|
|
878
1078
|
tsconfigJson: true
|
|
@@ -881,6 +1081,7 @@ var ViteCommands = class {
|
|
|
881
1081
|
this.log.trace("Entry file found", { entry });
|
|
882
1082
|
const distDir = "dist";
|
|
883
1083
|
const clientDir = "public";
|
|
1084
|
+
await this.utils.ensureDependency(root, "vite", { run });
|
|
884
1085
|
await run.rm("dist", { alias: "clean dist" });
|
|
885
1086
|
const viteAlephaBuildOptions = (await import(join(root, "vite.config.ts")))?.default?.plugins.find((it) => !!it[OPTIONS])?.[OPTIONS] ?? {};
|
|
886
1087
|
const stats = flags.stats ?? viteAlephaBuildOptions.stats ?? false;
|
|
@@ -916,12 +1117,11 @@ var ViteCommands = class {
|
|
|
916
1117
|
if (clientBuilt && hasServer) await unlink(`${distDir}/${clientDir}/index.html`);
|
|
917
1118
|
}
|
|
918
1119
|
});
|
|
919
|
-
await
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
})
|
|
1120
|
+
await copyAssets({
|
|
1121
|
+
root,
|
|
1122
|
+
entry: `${distDir}/index.js`,
|
|
1123
|
+
distDir,
|
|
1124
|
+
run
|
|
925
1125
|
});
|
|
926
1126
|
if (hasClient) {
|
|
927
1127
|
const sitemapBaseUrl = flags.sitemap ?? (typeof viteAlephaBuildOptions.client === "object" ? viteAlephaBuildOptions.client.sitemap?.hostname : void 0);
|
|
@@ -979,12 +1179,7 @@ var ViteCommands = class {
|
|
|
979
1179
|
tsconfigJson: true,
|
|
980
1180
|
viteConfigTs: true
|
|
981
1181
|
});
|
|
982
|
-
|
|
983
|
-
await import("./dist-BlfFtOk2.js");
|
|
984
|
-
} catch {
|
|
985
|
-
this.log.error("Vitest is not installed. Please install it with `npm install -D vitest` or `yarn add -D vitest`.");
|
|
986
|
-
process.exit(1);
|
|
987
|
-
}
|
|
1182
|
+
await this.utils.ensureDependency(root, "vitest");
|
|
988
1183
|
await this.utils.exec(`vitest run ${this.env.VITEST_ARGS}`);
|
|
989
1184
|
}
|
|
990
1185
|
});
|
|
@@ -1036,7 +1231,9 @@ var AlephaPackageBuilderCli = class {
|
|
|
1036
1231
|
});
|
|
1037
1232
|
pkgData.exports = {};
|
|
1038
1233
|
for (const item of modules) {
|
|
1039
|
-
|
|
1234
|
+
let m = `./${item.name.replace("core", "")}`;
|
|
1235
|
+
if (m.endsWith("/")) m = m.slice(0, -1);
|
|
1236
|
+
const path = m;
|
|
1040
1237
|
pkgData.exports[path] = {};
|
|
1041
1238
|
pkgData.exports[path].types = `./src/${item.name}/index.ts`;
|
|
1042
1239
|
if (item.native) pkgData.exports[path]["react-native"] = `./src/${item.name}/index.native.ts`;
|
|
@@ -1057,7 +1254,7 @@ var AlephaPackageBuilderCli = class {
|
|
|
1057
1254
|
const external = [
|
|
1058
1255
|
"alepha",
|
|
1059
1256
|
packageName,
|
|
1060
|
-
...modules.map((item) => `${packageName}/${item.name.replace("-", "/")}`)
|
|
1257
|
+
...modules.map((item) => `${packageName}/${item.name.replace("-", "/").replace("/core", "")}`)
|
|
1061
1258
|
];
|
|
1062
1259
|
await run.rm(this.dist);
|
|
1063
1260
|
const build = async (item) => {
|
|
@@ -1089,10 +1286,9 @@ var AlephaPackageBuilderCli = class {
|
|
|
1089
1286
|
dts: false,
|
|
1090
1287
|
external
|
|
1091
1288
|
});
|
|
1092
|
-
const config = join(tmpDir, `tsdown-${item.name}.config.js`);
|
|
1289
|
+
const config = join(tmpDir, `tsdown-${item.name.replace("/", "-")}.config.js`);
|
|
1093
1290
|
await this.fs.writeFile(config, `export default ${JSON.stringify(entries, null, 2)};`);
|
|
1094
1291
|
await run(`npx tsdown -c=${config}`);
|
|
1095
|
-
await this.fs.rm(config);
|
|
1096
1292
|
};
|
|
1097
1293
|
const concurrency = Math.ceil(os.cpus().length / 2);
|
|
1098
1294
|
const queue = modules.slice();
|
|
@@ -1169,32 +1365,37 @@ function detectCircularDependencies(modules) {
|
|
|
1169
1365
|
}
|
|
1170
1366
|
async function analyzeModules(srcDir, packageName) {
|
|
1171
1367
|
const modules = [];
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
const
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1368
|
+
async function scanDirectory(dir, prefix) {
|
|
1369
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
1370
|
+
for (const entry of entries) if (entry.isDirectory()) {
|
|
1371
|
+
const moduleName = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
1372
|
+
const modulePath = join(dir, entry.name);
|
|
1373
|
+
if (await fileExists(join(modulePath, "index.ts"))) {
|
|
1374
|
+
const dependencies = /* @__PURE__ */ new Set();
|
|
1375
|
+
const hasBrowser = await fileExists(join(modulePath, "index.browser.ts"));
|
|
1376
|
+
const hasNative = await fileExists(join(modulePath, "index.native.ts"));
|
|
1377
|
+
const hasNode = await fileExists(join(modulePath, "index.node.ts"));
|
|
1378
|
+
const files = await getAllFiles(modulePath);
|
|
1379
|
+
for (const file of files) {
|
|
1380
|
+
const deps = extractAlephaDependencies(await readFile(file, "utf-8"), packageName, moduleName);
|
|
1381
|
+
for (const dep of deps) {
|
|
1382
|
+
if (dep.endsWith(".ts")) throw new Error(`Invalid dependency '${dep}' in module '${moduleName}'. Do not include file extensions in Alepha module imports.`);
|
|
1383
|
+
if (dep.includes("-")) throw new Error(`Invalid dependency '${dep}' in module '${moduleName}'. Use '/' instead of '-' in Alepha module imports.`);
|
|
1384
|
+
dependencies.add(dep);
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
const module = {
|
|
1388
|
+
name: moduleName,
|
|
1389
|
+
dependencies: Array.from(dependencies)
|
|
1390
|
+
};
|
|
1391
|
+
if (hasNative) module.native = true;
|
|
1392
|
+
if (hasBrowser) module.browser = true;
|
|
1393
|
+
if (hasNode) module.node = true;
|
|
1394
|
+
modules.push(module);
|
|
1395
|
+
} else await scanDirectory(modulePath, moduleName);
|
|
1188
1396
|
}
|
|
1189
|
-
const module = {
|
|
1190
|
-
name: moduleName,
|
|
1191
|
-
dependencies: Array.from(dependencies)
|
|
1192
|
-
};
|
|
1193
|
-
if (hasNative) module.native = true;
|
|
1194
|
-
if (hasBrowser) module.browser = true;
|
|
1195
|
-
if (hasNode) module.node = true;
|
|
1196
|
-
modules.push(module);
|
|
1197
1397
|
}
|
|
1398
|
+
await scanDirectory(srcDir, "");
|
|
1198
1399
|
detectCircularDependencies(modules);
|
|
1199
1400
|
return modules;
|
|
1200
1401
|
}
|