alepha 0.14.3 → 0.15.0
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 +2 -5
- package/dist/api/audits/index.d.ts +620 -811
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +185 -377
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +0 -1
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.d.ts +245 -435
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/notifications/index.d.ts +238 -429
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/parameters/index.d.ts +236 -427
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/users/index.browser.js +1 -2
- package/dist/api/users/index.browser.js.map +1 -1
- package/dist/api/users/index.d.ts +1010 -1196
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +178 -151
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +17 -17
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/batch/index.d.ts +122 -122
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +1 -2
- package/dist/batch/index.js.map +1 -1
- package/dist/bucket/index.d.ts +163 -163
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/cache/core/index.d.ts +46 -46
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/redis/index.d.ts.map +1 -1
- package/dist/cli/index.d.ts +384 -285
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1113 -623
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +299 -300
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +13 -9
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +445 -103
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +733 -625
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +446 -103
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +445 -103
- package/dist/core/index.native.js.map +1 -1
- package/dist/datetime/index.d.ts +44 -44
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js +4 -4
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/index.d.ts +97 -50
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +129 -33
- package/dist/email/index.js.map +1 -1
- package/dist/fake/index.d.ts +7981 -14
- package/dist/fake/index.d.ts.map +1 -1
- package/dist/file/index.d.ts +523 -390
- package/dist/file/index.d.ts.map +1 -1
- package/dist/file/index.js +253 -1
- package/dist/file/index.js.map +1 -1
- package/dist/lock/core/index.d.ts +208 -208
- package/dist/lock/core/index.d.ts.map +1 -1
- package/dist/lock/redis/index.d.ts.map +1 -1
- package/dist/logger/index.d.ts +25 -26
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +12 -2
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts +197 -197
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/chunk-DtkW-qnP.js +38 -0
- package/dist/orm/index.browser.js.map +1 -1
- package/dist/orm/index.bun.js +2814 -0
- package/dist/orm/index.bun.js.map +1 -0
- package/dist/orm/index.d.ts +1228 -1216
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +2041 -1967
- package/dist/orm/index.js.map +1 -1
- package/dist/queue/core/index.d.ts +248 -248
- package/dist/queue/core/index.d.ts.map +1 -1
- package/dist/queue/redis/index.d.ts.map +1 -1
- package/dist/redis/index.bun.js +285 -0
- package/dist/redis/index.bun.js.map +1 -0
- package/dist/redis/index.d.ts +118 -136
- package/dist/redis/index.d.ts.map +1 -1
- package/dist/redis/index.js +18 -38
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.d.ts +69 -69
- package/dist/retry/index.d.ts.map +1 -1
- package/dist/router/index.d.ts +6 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/scheduler/index.d.ts +25 -25
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/security/index.browser.js +5 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.d.ts +417 -254
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +386 -86
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +110 -110
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +20 -20
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cache/index.d.ts +62 -47
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/cache/index.js +56 -3
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +6 -0
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +36 -1
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +6 -6
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +3 -3
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js +2 -2
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +242 -150
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +294 -125
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.d.ts +11 -12
- package/dist/server/cors/index.d.ts.map +1 -1
- package/dist/server/health/index.d.ts +0 -1
- package/dist/server/health/index.d.ts.map +1 -1
- package/dist/server/helmet/index.d.ts +2 -2
- package/dist/server/helmet/index.d.ts.map +1 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +123 -124
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +1 -2
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.d.ts.map +1 -1
- package/dist/server/multipart/index.d.ts +6 -6
- package/dist/server/multipart/index.d.ts.map +1 -1
- package/dist/server/proxy/index.d.ts +102 -103
- package/dist/server/proxy/index.d.ts.map +1 -1
- package/dist/server/rate-limit/index.d.ts +16 -16
- package/dist/server/rate-limit/index.d.ts.map +1 -1
- package/dist/server/static/index.d.ts +44 -44
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +4 -0
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts +48 -49
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +3 -5
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.d.ts +13 -11
- package/dist/sms/index.d.ts.map +1 -1
- package/dist/sms/index.js +7 -7
- package/dist/sms/index.js.map +1 -1
- package/dist/thread/index.d.ts +71 -72
- package/dist/thread/index.d.ts.map +1 -1
- package/dist/topic/core/index.d.ts +318 -318
- package/dist/topic/core/index.d.ts.map +1 -1
- package/dist/topic/redis/index.d.ts +6 -6
- package/dist/topic/redis/index.d.ts.map +1 -1
- package/dist/vite/index.d.ts +5805 -249
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +599 -513
- package/dist/vite/index.js.map +1 -1
- package/dist/websocket/index.browser.js +6 -6
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.d.ts +247 -247
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +6 -6
- package/dist/websocket/index.js.map +1 -1
- package/package.json +9 -14
- package/src/api/files/controllers/AdminFileStatsController.ts +0 -1
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +5 -0
- package/src/api/users/controllers/{UserRealmController.ts → RealmController.ts} +11 -11
- package/src/api/users/entities/users.ts +1 -1
- package/src/api/users/index.ts +8 -8
- package/src/api/users/primitives/{$userRealm.ts → $realm.ts} +17 -19
- package/src/api/users/providers/{UserRealmProvider.ts → RealmProvider.ts} +26 -30
- package/src/api/users/schemas/{userRealmConfigSchema.ts → realmConfigSchema.ts} +2 -2
- package/src/api/users/services/CredentialService.ts +7 -7
- package/src/api/users/services/IdentityService.ts +4 -4
- package/src/api/users/services/RegistrationService.spec.ts +25 -27
- package/src/api/users/services/RegistrationService.ts +38 -27
- package/src/api/users/services/SessionCrudService.ts +3 -3
- package/src/api/users/services/SessionService.spec.ts +3 -3
- package/src/api/users/services/SessionService.ts +28 -9
- package/src/api/users/services/UserService.ts +7 -7
- package/src/batch/providers/BatchProvider.ts +1 -2
- package/src/cli/apps/AlephaCli.ts +0 -2
- package/src/cli/apps/AlephaPackageBuilderCli.ts +38 -19
- package/src/cli/assets/apiHelloControllerTs.ts +18 -0
- package/src/cli/assets/apiIndexTs.ts +16 -0
- package/src/cli/assets/claudeMd.ts +303 -0
- package/src/cli/assets/mainBrowserTs.ts +2 -2
- package/src/cli/assets/mainServerTs.ts +24 -0
- package/src/cli/assets/webAppRouterTs.ts +15 -0
- package/src/cli/assets/webHelloComponentTsx.ts +16 -0
- package/src/cli/assets/webIndexTs.ts +16 -0
- package/src/cli/atoms/buildOptions.ts +88 -0
- package/src/cli/commands/build.ts +70 -87
- package/src/cli/commands/db.ts +21 -22
- package/src/cli/commands/deploy.ts +17 -5
- package/src/cli/commands/dev.ts +22 -14
- package/src/cli/commands/format.ts +8 -2
- package/src/cli/commands/gen/env.ts +53 -0
- package/src/cli/commands/gen/openapi.ts +1 -1
- package/src/cli/commands/gen/resource.ts +15 -0
- package/src/cli/commands/gen.ts +7 -1
- package/src/cli/commands/init.ts +74 -30
- package/src/cli/commands/lint.ts +8 -2
- package/src/cli/commands/test.ts +8 -3
- package/src/cli/commands/typecheck.ts +5 -1
- package/src/cli/commands/verify.ts +5 -3
- package/src/cli/defineConfig.ts +49 -7
- package/src/cli/index.ts +0 -1
- package/src/cli/services/AlephaCliUtils.ts +39 -589
- package/src/cli/services/PackageManagerUtils.ts +301 -0
- package/src/cli/services/ProjectScaffolder.ts +306 -0
- package/src/command/helpers/Runner.spec.ts +2 -2
- package/src/command/helpers/Runner.ts +16 -4
- package/src/command/primitives/$command.ts +0 -6
- package/src/command/providers/CliProvider.ts +1 -3
- package/src/core/Alepha.ts +42 -0
- package/src/core/__tests__/Alepha-graph.spec.ts +4 -0
- package/src/core/index.shared.ts +1 -0
- package/src/core/index.ts +2 -0
- package/src/core/primitives/$hook.ts +6 -2
- package/src/core/primitives/$module.spec.ts +4 -0
- package/src/core/providers/AlsProvider.ts +1 -1
- package/src/core/providers/CodecManager.spec.ts +12 -6
- package/src/core/providers/CodecManager.ts +26 -6
- package/src/core/providers/EventManager.ts +169 -13
- package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +621 -0
- package/src/core/providers/KeylessJsonSchemaCodec.ts +407 -0
- package/src/core/providers/StateManager.spec.ts +27 -16
- package/src/email/providers/LocalEmailProvider.spec.ts +111 -87
- package/src/email/providers/LocalEmailProvider.ts +52 -15
- package/src/email/providers/NodemailerEmailProvider.ts +167 -56
- package/src/file/errors/FileError.ts +7 -0
- package/src/file/index.ts +9 -1
- package/src/file/providers/MemoryFileSystemProvider.ts +393 -0
- package/src/logger/index.ts +15 -3
- package/src/mcp/transports/StdioMcpTransport.ts +1 -1
- package/src/orm/index.browser.ts +1 -19
- package/src/orm/index.bun.ts +77 -0
- package/src/orm/index.shared-server.ts +22 -0
- package/src/orm/index.shared.ts +15 -0
- package/src/orm/index.ts +13 -39
- package/src/orm/providers/drivers/BunPostgresProvider.ts +3 -5
- package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -1
- package/src/orm/providers/drivers/CloudflareD1Provider.ts +4 -0
- package/src/orm/providers/drivers/DatabaseProvider.ts +4 -0
- package/src/orm/providers/drivers/PglitePostgresProvider.ts +4 -0
- package/src/orm/services/Repository.ts +8 -0
- package/src/queue/core/providers/WorkerProvider.spec.ts +48 -32
- package/src/redis/index.bun.ts +35 -0
- package/src/redis/providers/BunRedisProvider.ts +12 -43
- package/src/redis/providers/BunRedisSubscriberProvider.ts +2 -3
- package/src/redis/providers/NodeRedisProvider.ts +16 -34
- package/src/{server/security → security}/__tests__/BasicAuth.spec.ts +11 -11
- package/src/{server/security → security}/__tests__/ServerSecurityProvider-realm.spec.ts +21 -16
- package/src/{server/security/providers → security/__tests__}/ServerSecurityProvider.spec.ts +5 -5
- package/src/security/index.browser.ts +5 -0
- package/src/security/index.ts +90 -7
- package/src/security/primitives/{$realm.spec.ts → $issuer.spec.ts} +11 -11
- package/src/security/primitives/{$realm.ts → $issuer.ts} +20 -17
- package/src/security/primitives/$role.ts +5 -5
- package/src/security/primitives/$serviceAccount.spec.ts +5 -5
- package/src/security/primitives/$serviceAccount.ts +3 -3
- package/src/{server/security → security}/providers/ServerSecurityProvider.ts +5 -7
- package/src/server/auth/primitives/$auth.ts +10 -10
- package/src/server/auth/primitives/$authCredentials.ts +3 -3
- package/src/server/auth/primitives/$authGithub.ts +3 -3
- package/src/server/auth/primitives/$authGoogle.ts +3 -3
- package/src/server/auth/providers/ServerAuthProvider.ts +13 -13
- package/src/server/cache/providers/ServerCacheProvider.spec.ts +183 -0
- package/src/server/cache/providers/ServerCacheProvider.ts +95 -10
- package/src/server/compress/providers/ServerCompressProvider.ts +61 -2
- package/src/server/cookies/providers/ServerCookiesProvider.ts +3 -3
- package/src/server/core/helpers/ServerReply.ts +2 -2
- package/src/server/core/providers/NodeHttpServerProvider.ts +25 -6
- package/src/server/core/providers/ServerBodyParserProvider.ts +19 -23
- package/src/server/core/providers/ServerLoggerProvider.ts +23 -19
- package/src/server/core/providers/ServerProvider.ts +155 -22
- package/src/server/core/providers/ServerRouterProvider.ts +259 -115
- package/src/server/core/providers/ServerTimingProvider.ts +2 -2
- package/src/server/links/index.ts +1 -1
- package/src/server/links/providers/LinkProvider.ts +1 -1
- package/src/server/static/providers/ServerStaticProvider.ts +10 -0
- package/src/server/swagger/index.ts +1 -1
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +5 -8
- package/src/sms/providers/LocalSmsProvider.spec.ts +153 -111
- package/src/sms/providers/LocalSmsProvider.ts +8 -7
- package/src/vite/helpers/boot.ts +28 -17
- package/src/vite/helpers/importViteReact.ts +13 -0
- package/src/vite/index.ts +1 -21
- package/src/vite/plugins/viteAlephaDev.ts +16 -1
- package/src/vite/plugins/viteAlephaSsrPreload.ts +222 -0
- package/src/vite/tasks/buildClient.ts +11 -0
- package/src/vite/tasks/buildServer.ts +59 -4
- package/src/vite/tasks/devServer.ts +71 -0
- package/src/vite/tasks/generateCloudflare.ts +7 -0
- package/src/vite/tasks/index.ts +2 -1
- package/dist/server/security/index.browser.js +0 -13
- package/dist/server/security/index.browser.js.map +0 -1
- package/dist/server/security/index.d.ts +0 -173
- package/dist/server/security/index.d.ts.map +0 -1
- package/dist/server/security/index.js +0 -311
- package/dist/server/security/index.js.map +0 -1
- package/src/cli/assets/appRouterTs.ts +0 -9
- package/src/cli/assets/mainTs.ts +0 -13
- package/src/cli/assets/viteConfigTs.ts +0 -14
- package/src/cli/commands/run.ts +0 -24
- package/src/server/security/index.browser.ts +0 -10
- package/src/server/security/index.ts +0 -94
- package/src/vite/plugins/viteAlepha.ts +0 -37
- package/src/vite/plugins/viteAlephaBuild.ts +0 -281
- /package/src/{server/security → security}/primitives/$basicAuth.ts +0 -0
- /package/src/{server/security → security}/providers/ServerBasicAuthProvider.ts +0 -0
package/src/cli/commands/init.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { $inject, t } from "alepha";
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
|
+
import { FileSystemProvider } from "alepha/file";
|
|
3
4
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
5
|
+
import { PackageManagerUtils } from "../services/PackageManagerUtils.ts";
|
|
6
|
+
import { ProjectScaffolder } from "../services/ProjectScaffolder.ts";
|
|
4
7
|
|
|
5
8
|
export class InitCommand {
|
|
6
9
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
10
|
+
protected readonly pm = $inject(PackageManagerUtils);
|
|
11
|
+
protected readonly scaffolder = $inject(ProjectScaffolder);
|
|
12
|
+
protected readonly fs = $inject(FileSystemProvider);
|
|
7
13
|
|
|
8
14
|
/**
|
|
9
15
|
* Ensure the project has the necessary Alepha configuration files.
|
|
@@ -12,80 +18,118 @@ export class InitCommand {
|
|
|
12
18
|
public readonly init = $command({
|
|
13
19
|
name: "init",
|
|
14
20
|
description: "Add missing Alepha configuration files to the project",
|
|
21
|
+
args: t.optional(
|
|
22
|
+
t.text({
|
|
23
|
+
title: "path",
|
|
24
|
+
trim: true,
|
|
25
|
+
lowercase: true,
|
|
26
|
+
}),
|
|
27
|
+
),
|
|
15
28
|
flags: t.object({
|
|
29
|
+
agent: t.optional(
|
|
30
|
+
t.boolean({
|
|
31
|
+
aliases: ["a"],
|
|
32
|
+
description: "Add CLAUDE.md for Claude Code AI assistant",
|
|
33
|
+
}),
|
|
34
|
+
),
|
|
16
35
|
// choose package manager
|
|
17
36
|
yarn: t.optional(t.boolean({ description: "Use Yarn package manager" })),
|
|
18
37
|
pnpm: t.optional(t.boolean({ description: "Use pnpm package manager" })),
|
|
19
38
|
npm: t.optional(t.boolean({ description: "Use npm package manager" })),
|
|
20
39
|
bun: t.optional(t.boolean({ description: "Use Bun package manager" })),
|
|
21
40
|
// choose which dependencies to add
|
|
22
|
-
|
|
23
|
-
t.boolean({
|
|
41
|
+
web: t.optional(
|
|
42
|
+
t.boolean({
|
|
43
|
+
aliases: ["r"],
|
|
44
|
+
description: "Include Alepha React dependencies",
|
|
45
|
+
}),
|
|
24
46
|
),
|
|
25
|
-
|
|
47
|
+
admin: t.optional(
|
|
26
48
|
t.boolean({ description: "Include Alepha UI dependencies" }),
|
|
27
49
|
),
|
|
28
50
|
test: t.optional(
|
|
29
51
|
t.boolean({ description: "Include Vitest and create test directory" }),
|
|
30
52
|
),
|
|
31
53
|
}),
|
|
32
|
-
handler: async ({ run, flags, root }) => {
|
|
33
|
-
if (flags.
|
|
34
|
-
flags.
|
|
54
|
+
handler: async ({ run, flags, root, args }) => {
|
|
55
|
+
if (flags.admin) {
|
|
56
|
+
flags.web = true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (args) {
|
|
60
|
+
root = this.fs.join(root, args);
|
|
61
|
+
await this.fs.mkdir(root);
|
|
35
62
|
}
|
|
36
63
|
|
|
37
|
-
const isExpo = await this.
|
|
64
|
+
const isExpo = await this.pm.hasExpo(root);
|
|
38
65
|
|
|
39
66
|
await run({
|
|
40
67
|
name: "ensuring configuration files",
|
|
41
68
|
handler: async () => {
|
|
42
|
-
await this.
|
|
69
|
+
await this.scaffolder.ensureConfig(root, {
|
|
43
70
|
tsconfigJson: true,
|
|
44
71
|
packageJson: flags,
|
|
45
72
|
biomeJson: true,
|
|
46
|
-
viteConfigTs: !isExpo,
|
|
47
73
|
editorconfig: true,
|
|
48
|
-
indexHtml: !!flags.
|
|
74
|
+
indexHtml: !!flags.web && !isExpo,
|
|
75
|
+
claudeMd: flags.agent
|
|
76
|
+
? { react: !!flags.web, ui: !!flags.admin }
|
|
77
|
+
: false,
|
|
49
78
|
});
|
|
50
79
|
|
|
51
|
-
// Create
|
|
52
|
-
if (!flags.
|
|
53
|
-
await this.
|
|
80
|
+
// Create API project structure if not React
|
|
81
|
+
if (!flags.web) {
|
|
82
|
+
await this.scaffolder.ensureApiProject(root);
|
|
54
83
|
}
|
|
55
84
|
},
|
|
56
85
|
});
|
|
57
86
|
|
|
58
87
|
// TODO: check if all alepha dependencies are same version
|
|
59
88
|
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
await this.
|
|
63
|
-
await run("yarn set version stable");
|
|
64
|
-
} else if (
|
|
65
|
-
await this.
|
|
66
|
-
} else if (
|
|
67
|
-
await this.
|
|
89
|
+
const pmName = await this.pm.getPackageManager(root, flags);
|
|
90
|
+
if (pmName === "yarn") {
|
|
91
|
+
await this.pm.ensureYarn(root);
|
|
92
|
+
await run("yarn set version stable", { root });
|
|
93
|
+
} else if (pmName === "bun") {
|
|
94
|
+
await this.pm.ensureBun(root);
|
|
95
|
+
} else if (pmName === "pnpm") {
|
|
96
|
+
await this.pm.ensurePnpm(root);
|
|
68
97
|
} else {
|
|
69
|
-
await this.
|
|
98
|
+
await this.pm.ensureNpm(root);
|
|
70
99
|
}
|
|
71
100
|
|
|
72
|
-
await run(`${
|
|
73
|
-
alias: `installing dependencies with ${
|
|
101
|
+
await run(`${pmName} install`, {
|
|
102
|
+
alias: `installing dependencies with ${pmName}`,
|
|
103
|
+
root,
|
|
74
104
|
});
|
|
75
105
|
|
|
76
106
|
if (!isExpo) {
|
|
77
|
-
await this.
|
|
107
|
+
await this.pm.ensureDependency(root, "vite", {
|
|
108
|
+
run,
|
|
109
|
+
exec: (cmd, opts) => this.utils.exec(cmd, opts),
|
|
110
|
+
});
|
|
78
111
|
}
|
|
79
112
|
|
|
80
|
-
await this.
|
|
113
|
+
await this.pm.ensureDependency(root, "@biomejs/biome", {
|
|
114
|
+
run,
|
|
115
|
+
exec: (cmd, opts) => this.utils.exec(cmd, opts),
|
|
116
|
+
});
|
|
81
117
|
|
|
82
118
|
// Install vitest and create test directory if --test flag is set
|
|
83
119
|
if (flags.test) {
|
|
84
|
-
await this.
|
|
85
|
-
await run(
|
|
86
|
-
|
|
87
|
-
|
|
120
|
+
await this.scaffolder.ensureTestDir(root);
|
|
121
|
+
await run(
|
|
122
|
+
`${pmName} ${pmName === "yarn" ? "add" : "install"} -D vitest`,
|
|
123
|
+
{
|
|
124
|
+
alias: "setup testing with Vitest",
|
|
125
|
+
},
|
|
126
|
+
);
|
|
88
127
|
}
|
|
128
|
+
|
|
129
|
+
await run(`${pmName} run lint`, {
|
|
130
|
+
alias: "running linter",
|
|
131
|
+
root,
|
|
132
|
+
});
|
|
89
133
|
},
|
|
90
134
|
});
|
|
91
135
|
}
|
package/src/cli/commands/lint.ts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { $inject } from "alepha";
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
3
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
|
+
import { PackageManagerUtils } from "../services/PackageManagerUtils.ts";
|
|
5
|
+
import { ProjectScaffolder } from "../services/ProjectScaffolder.ts";
|
|
4
6
|
|
|
5
7
|
export class LintCommand {
|
|
6
8
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
9
|
+
protected readonly pm = $inject(PackageManagerUtils);
|
|
10
|
+
protected readonly scaffolder = $inject(ProjectScaffolder);
|
|
7
11
|
|
|
8
12
|
public readonly lint = $command({
|
|
9
13
|
name: "lint",
|
|
10
14
|
description: "Run linter across the codebase using Biome",
|
|
11
15
|
handler: async ({ root }) => {
|
|
12
|
-
await this.
|
|
13
|
-
await this.
|
|
16
|
+
await this.scaffolder.ensureConfig(root, { biomeJson: true });
|
|
17
|
+
await this.pm.ensureDependency(root, "@biomejs/biome", {
|
|
18
|
+
exec: (cmd, opts) => this.utils.exec(cmd, opts),
|
|
19
|
+
});
|
|
14
20
|
await this.utils.exec("biome check --formatter-enabled=false --fix");
|
|
15
21
|
},
|
|
16
22
|
});
|
package/src/cli/commands/test.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { $inject, t } from "alepha";
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
3
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
|
+
import { PackageManagerUtils } from "../services/PackageManagerUtils.ts";
|
|
5
|
+
import { ProjectScaffolder } from "../services/ProjectScaffolder.ts";
|
|
4
6
|
|
|
5
7
|
export class TestCommand {
|
|
6
8
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
9
|
+
protected readonly pm = $inject(PackageManagerUtils);
|
|
10
|
+
protected readonly scaffolder = $inject(ProjectScaffolder);
|
|
7
11
|
|
|
8
12
|
public readonly test = $command({
|
|
9
13
|
name: "test",
|
|
@@ -26,13 +30,14 @@ export class TestCommand {
|
|
|
26
30
|
),
|
|
27
31
|
}),
|
|
28
32
|
handler: async ({ root, flags, env }) => {
|
|
29
|
-
await this.
|
|
33
|
+
await this.scaffolder.ensureConfig(root, {
|
|
30
34
|
tsconfigJson: true,
|
|
31
|
-
viteConfigTs: true,
|
|
32
35
|
});
|
|
33
36
|
|
|
34
37
|
// Ensure vitest is installed before running
|
|
35
|
-
await this.
|
|
38
|
+
await this.pm.ensureDependency(root, "vitest", {
|
|
39
|
+
exec: (cmd, opts) => this.utils.exec(cmd, opts),
|
|
40
|
+
});
|
|
36
41
|
|
|
37
42
|
const config = flags.config ? `--config=${flags.config}` : "";
|
|
38
43
|
|
|
@@ -2,9 +2,11 @@ import { $inject } from "alepha";
|
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
3
|
import { $logger } from "alepha/logger";
|
|
4
4
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
5
|
+
import { PackageManagerUtils } from "../services/PackageManagerUtils.ts";
|
|
5
6
|
|
|
6
7
|
export class TypecheckCommand {
|
|
7
8
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
9
|
+
protected readonly pm = $inject(PackageManagerUtils);
|
|
8
10
|
protected readonly log = $logger();
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -16,7 +18,9 @@ export class TypecheckCommand {
|
|
|
16
18
|
description: "Check TypeScript types across the codebase",
|
|
17
19
|
handler: async ({ root }) => {
|
|
18
20
|
this.log.info("Starting TypeScript type checking...");
|
|
19
|
-
await this.
|
|
21
|
+
await this.pm.ensureDependency(root, "typescript", {
|
|
22
|
+
exec: (cmd, opts) => this.utils.exec(cmd, opts),
|
|
23
|
+
});
|
|
20
24
|
await this.utils.exec("tsc --noEmit");
|
|
21
25
|
this.log.info("TypeScript type checking completed successfully.");
|
|
22
26
|
},
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { $inject } from "alepha";
|
|
2
2
|
import { $command } from "alepha/command";
|
|
3
3
|
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
|
+
import { PackageManagerUtils } from "../services/PackageManagerUtils.ts";
|
|
4
5
|
|
|
5
6
|
export class VerifyCommand {
|
|
6
7
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
8
|
+
protected readonly pm = $inject(PackageManagerUtils);
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* Run a series of verification commands to ensure code quality and correctness.
|
|
@@ -28,16 +30,16 @@ export class VerifyCommand {
|
|
|
28
30
|
|
|
29
31
|
await run("alepha typecheck");
|
|
30
32
|
|
|
31
|
-
const pkg = await this.
|
|
33
|
+
const pkg = await this.pm.readPackageJson(root);
|
|
32
34
|
if (pkg.devDependencies?.vitest) {
|
|
33
35
|
await run("alepha test");
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
if (await this.utils.exists(root, "migrations")) {
|
|
37
|
-
await run("alepha db
|
|
39
|
+
await run("alepha db check-migrations");
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
const isExpo = await this.
|
|
42
|
+
const isExpo = await this.pm.hasExpo(root);
|
|
41
43
|
if (!isExpo) {
|
|
42
44
|
await run("alepha build");
|
|
43
45
|
}
|
package/src/cli/defineConfig.ts
CHANGED
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
import type { Alepha } from "alepha";
|
|
2
2
|
import type { CommandPrimitive } from "alepha/command";
|
|
3
|
+
import { type BuildOptions, buildOptions } from "./atoms/buildOptions.ts";
|
|
3
4
|
|
|
4
|
-
export
|
|
5
|
+
export interface AlephaCliConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Add custom commands to the Alepha CLI.
|
|
8
|
+
*
|
|
9
|
+
* You can override 'deploy', 'build', 'dev', 'start' commands this way.
|
|
10
|
+
* But you can also add your own commands and run them via `alepha <command>`.
|
|
11
|
+
*/
|
|
5
12
|
commands?: Record<string, CommandPrimitive>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Register more services to the Alepha CLI (enhancements, commands, etc.).
|
|
16
|
+
*/
|
|
6
17
|
services?: Array<any>;
|
|
7
|
-
};
|
|
8
18
|
|
|
9
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Configure Alepha build command.
|
|
21
|
+
*/
|
|
22
|
+
build?: BuildOptions;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Environment variables to set before running commands.
|
|
26
|
+
*
|
|
27
|
+
* Always use .env files by default, this is only for dynamic values.
|
|
28
|
+
*/
|
|
29
|
+
env?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type AlephaCliConfigFn = (alepha: Alepha) => AlephaCliConfig;
|
|
33
|
+
|
|
34
|
+
export const defineConfig = (
|
|
35
|
+
runConfig: AlephaCliConfig | AlephaCliConfigFn,
|
|
36
|
+
) => {
|
|
10
37
|
return (alepha: Alepha) => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
38
|
+
const config =
|
|
39
|
+
typeof runConfig === "function" ? runConfig(alepha) : runConfig;
|
|
40
|
+
|
|
41
|
+
if (config.services) {
|
|
42
|
+
for (const it of config.services) {
|
|
43
|
+
alepha.with(it);
|
|
44
|
+
}
|
|
14
45
|
}
|
|
46
|
+
|
|
47
|
+
if (config.env) {
|
|
48
|
+
for (const [key, value] of Object.entries(config.env)) {
|
|
49
|
+
process.env[key] = String(value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (config.build) {
|
|
54
|
+
alepha.set(buildOptions, config.build);
|
|
55
|
+
}
|
|
56
|
+
|
|
15
57
|
return {
|
|
16
|
-
...commands,
|
|
58
|
+
...config.commands,
|
|
17
59
|
};
|
|
18
60
|
};
|
|
19
61
|
};
|
package/src/cli/index.ts
CHANGED
|
@@ -12,7 +12,6 @@ export * from "./commands/gen/openapi.ts";
|
|
|
12
12
|
export * from "./commands/init.ts";
|
|
13
13
|
export * from "./commands/lint.ts";
|
|
14
14
|
export * from "./commands/root.ts";
|
|
15
|
-
export * from "./commands/run.ts";
|
|
16
15
|
export * from "./commands/test.ts";
|
|
17
16
|
export * from "./commands/typecheck.ts";
|
|
18
17
|
export * from "./commands/verify.ts";
|