alepha 0.11.9 → 0.11.11

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.
Files changed (167) hide show
  1. package/README.md +61 -17
  2. package/dist/index.cjs +17089 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.js +17088 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +42 -365
  9. package/src/assets/biomeJson.ts +33 -0
  10. package/src/assets/tsconfigJson.ts +18 -0
  11. package/src/assets/viteConfigTs.ts +14 -0
  12. package/src/commands/BiomeCommands.ts +41 -0
  13. package/src/commands/CoreCommands.ts +169 -0
  14. package/src/commands/DrizzleCommands.ts +228 -0
  15. package/src/commands/VerifyCommands.ts +44 -0
  16. package/src/commands/ViteCommands.ts +119 -0
  17. package/src/index.ts +35 -0
  18. package/src/services/ProcessRunner.ts +89 -0
  19. package/src/services/ProjectUtils.ts +508 -0
  20. package/src/version.ts +7 -0
  21. package/api/files.cjs +0 -8
  22. package/api/files.d.ts +0 -438
  23. package/api/files.js +0 -1
  24. package/api/jobs.cjs +0 -8
  25. package/api/jobs.d.ts +0 -327
  26. package/api/jobs.js +0 -1
  27. package/api/notifications.cjs +0 -8
  28. package/api/notifications.d.ts +0 -263
  29. package/api/notifications.js +0 -1
  30. package/api/users.cjs +0 -8
  31. package/api/users.d.ts +0 -923
  32. package/api/users.js +0 -1
  33. package/api/verifications.cjs +0 -8
  34. package/api/verifications.d.ts +0 -1
  35. package/api/verifications.js +0 -1
  36. package/batch.cjs +0 -8
  37. package/batch.d.ts +0 -154
  38. package/batch.js +0 -1
  39. package/bucket.cjs +0 -8
  40. package/bucket.d.ts +0 -520
  41. package/bucket.js +0 -1
  42. package/cache/redis.cjs +0 -8
  43. package/cache/redis.d.ts +0 -40
  44. package/cache/redis.js +0 -1
  45. package/cache.cjs +0 -8
  46. package/cache.d.ts +0 -288
  47. package/cache.js +0 -1
  48. package/command.cjs +0 -8
  49. package/command.d.ts +0 -269
  50. package/command.js +0 -1
  51. package/core.cjs +0 -8
  52. package/core.d.ts +0 -1904
  53. package/core.js +0 -1
  54. package/datetime.cjs +0 -8
  55. package/datetime.d.ts +0 -144
  56. package/datetime.js +0 -1
  57. package/devtools.cjs +0 -8
  58. package/devtools.d.ts +0 -252
  59. package/devtools.js +0 -1
  60. package/email.cjs +0 -8
  61. package/email.d.ts +0 -187
  62. package/email.js +0 -1
  63. package/fake.cjs +0 -8
  64. package/fake.d.ts +0 -73
  65. package/fake.js +0 -1
  66. package/file.cjs +0 -8
  67. package/file.d.ts +0 -528
  68. package/file.js +0 -1
  69. package/lock/redis.cjs +0 -8
  70. package/lock/redis.d.ts +0 -24
  71. package/lock/redis.js +0 -1
  72. package/lock.cjs +0 -8
  73. package/lock.d.ts +0 -552
  74. package/lock.js +0 -1
  75. package/logger.cjs +0 -8
  76. package/logger.d.ts +0 -287
  77. package/logger.js +0 -1
  78. package/postgres.cjs +0 -8
  79. package/postgres.d.ts +0 -2143
  80. package/postgres.js +0 -1
  81. package/queue/redis.cjs +0 -8
  82. package/queue/redis.d.ts +0 -29
  83. package/queue/redis.js +0 -1
  84. package/queue.cjs +0 -8
  85. package/queue.d.ts +0 -760
  86. package/queue.js +0 -1
  87. package/react/auth.cjs +0 -8
  88. package/react/auth.d.ts +0 -504
  89. package/react/auth.js +0 -1
  90. package/react/form.cjs +0 -8
  91. package/react/form.d.ts +0 -211
  92. package/react/form.js +0 -1
  93. package/react/head.cjs +0 -8
  94. package/react/head.d.ts +0 -120
  95. package/react/head.js +0 -1
  96. package/react/i18n.cjs +0 -8
  97. package/react/i18n.d.ts +0 -168
  98. package/react/i18n.js +0 -1
  99. package/react.cjs +0 -8
  100. package/react.d.ts +0 -1263
  101. package/react.js +0 -1
  102. package/redis.cjs +0 -8
  103. package/redis.d.ts +0 -82
  104. package/redis.js +0 -1
  105. package/retry.cjs +0 -8
  106. package/retry.d.ts +0 -162
  107. package/retry.js +0 -1
  108. package/router.cjs +0 -8
  109. package/router.d.ts +0 -45
  110. package/router.js +0 -1
  111. package/scheduler.cjs +0 -8
  112. package/scheduler.d.ts +0 -145
  113. package/scheduler.js +0 -1
  114. package/security.cjs +0 -8
  115. package/security.d.ts +0 -586
  116. package/security.js +0 -1
  117. package/server/cache.cjs +0 -8
  118. package/server/cache.d.ts +0 -163
  119. package/server/cache.js +0 -1
  120. package/server/compress.cjs +0 -8
  121. package/server/compress.d.ts +0 -38
  122. package/server/compress.js +0 -1
  123. package/server/cookies.cjs +0 -8
  124. package/server/cookies.d.ts +0 -144
  125. package/server/cookies.js +0 -1
  126. package/server/cors.cjs +0 -8
  127. package/server/cors.d.ts +0 -45
  128. package/server/cors.js +0 -1
  129. package/server/health.cjs +0 -8
  130. package/server/health.d.ts +0 -58
  131. package/server/health.js +0 -1
  132. package/server/helmet.cjs +0 -8
  133. package/server/helmet.d.ts +0 -98
  134. package/server/helmet.js +0 -1
  135. package/server/links.cjs +0 -8
  136. package/server/links.d.ts +0 -322
  137. package/server/links.js +0 -1
  138. package/server/metrics.cjs +0 -8
  139. package/server/metrics.d.ts +0 -35
  140. package/server/metrics.js +0 -1
  141. package/server/multipart.cjs +0 -8
  142. package/server/multipart.d.ts +0 -42
  143. package/server/multipart.js +0 -1
  144. package/server/proxy.cjs +0 -8
  145. package/server/proxy.d.ts +0 -234
  146. package/server/proxy.js +0 -1
  147. package/server/security.cjs +0 -8
  148. package/server/security.d.ts +0 -92
  149. package/server/security.js +0 -1
  150. package/server/static.cjs +0 -8
  151. package/server/static.d.ts +0 -119
  152. package/server/static.js +0 -1
  153. package/server/swagger.cjs +0 -8
  154. package/server/swagger.d.ts +0 -161
  155. package/server/swagger.js +0 -1
  156. package/server.cjs +0 -8
  157. package/server.d.ts +0 -849
  158. package/server.js +0 -1
  159. package/topic/redis.cjs +0 -8
  160. package/topic/redis.d.ts +0 -42
  161. package/topic/redis.js +0 -1
  162. package/topic.cjs +0 -8
  163. package/topic.d.ts +0 -819
  164. package/topic.js +0 -1
  165. package/vite.cjs +0 -8
  166. package/vite.d.ts +0 -186
  167. package/vite.js +0 -1
package/package.json CHANGED
@@ -1,382 +1,59 @@
1
1
  {
2
2
  "name": "alepha",
3
- "version": "0.11.9",
3
+ "description": "Easy-to-use modern TypeScript framework for building many kind of applications.",
4
+ "version": "0.11.11",
4
5
  "type": "module",
5
6
  "engines": {
6
7
  "node": ">=22.0.0"
7
8
  },
8
9
  "license": "MIT",
9
- "description": "Alepha is a convention-driven TypeScript framework for building robust, end-to-end type-safe applications, from serverless APIs to full-stack React apps.",
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "files": [
13
+ "dist",
14
+ "src",
15
+ "assets"
16
+ ],
17
+ "bin": "./dist/index.js",
18
+ "dependencies": {
19
+ "@alepha/orm": "^0.11.11",
20
+ "@biomejs/biome": "^2.3.5",
21
+ "drizzle-kit": "^0.31.7",
22
+ "tar": "^7.5.2",
23
+ "tsx": "^4.20.6",
24
+ "typescript": "^5.9.3",
25
+ "vite": "^7.2.2",
26
+ "vitest": "^4.0.9"
27
+ },
28
+ "devDependencies": {
29
+ "@alepha/command": "^0.11.11",
30
+ "@alepha/core": "^0.11.11",
31
+ "@alepha/logger": "^0.11.11"
32
+ },
33
+ "scripts": {
34
+ "lint": "biome check --fix",
35
+ "build": "tsdown -c=../../tsdown.config.ts",
36
+ "check": "tsc --noEmit"
37
+ },
10
38
  "homepage": "https://github.com/feunard/alepha",
11
39
  "repository": {
12
40
  "type": "git",
13
41
  "url": "git+https://github.com/feunard/alepha.git"
14
42
  },
15
- "main": "./core.js",
16
- "types": "./core.d.ts",
17
- "dependencies": {
18
- "@alepha/api-files": "0.11.9",
19
- "@alepha/api-jobs": "0.11.9",
20
- "@alepha/api-notifications": "0.11.9",
21
- "@alepha/api-users": "0.11.9",
22
- "@alepha/api-verifications": "0.11.9",
23
- "@alepha/batch": "0.11.9",
24
- "@alepha/bucket": "0.11.9",
25
- "@alepha/cache": "0.11.9",
26
- "@alepha/cache-redis": "0.11.9",
27
- "@alepha/command": "0.11.9",
28
- "@alepha/core": "0.11.9",
29
- "@alepha/datetime": "0.11.9",
30
- "@alepha/devtools": "0.11.9",
31
- "@alepha/email": "0.11.9",
32
- "@alepha/fake": "0.11.9",
33
- "@alepha/file": "0.11.9",
34
- "@alepha/lock": "0.11.9",
35
- "@alepha/lock-redis": "0.11.9",
36
- "@alepha/logger": "0.11.9",
37
- "@alepha/postgres": "0.11.9",
38
- "@alepha/queue": "0.11.9",
39
- "@alepha/queue-redis": "0.11.9",
40
- "@alepha/react": "0.11.9",
41
- "@alepha/react-auth": "0.11.9",
42
- "@alepha/react-form": "0.11.9",
43
- "@alepha/react-head": "0.11.9",
44
- "@alepha/react-i18n": "0.11.9",
45
- "@alepha/redis": "0.11.9",
46
- "@alepha/retry": "0.11.9",
47
- "@alepha/router": "0.11.9",
48
- "@alepha/scheduler": "0.11.9",
49
- "@alepha/security": "0.11.9",
50
- "@alepha/server": "0.11.9",
51
- "@alepha/server-cache": "0.11.9",
52
- "@alepha/server-compress": "0.11.9",
53
- "@alepha/server-cookies": "0.11.9",
54
- "@alepha/server-cors": "0.11.9",
55
- "@alepha/server-health": "0.11.9",
56
- "@alepha/server-helmet": "0.11.9",
57
- "@alepha/server-links": "0.11.9",
58
- "@alepha/server-metrics": "0.11.9",
59
- "@alepha/server-multipart": "0.11.9",
60
- "@alepha/server-proxy": "0.11.9",
61
- "@alepha/server-security": "0.11.9",
62
- "@alepha/server-static": "0.11.9",
63
- "@alepha/server-swagger": "0.11.9",
64
- "@alepha/topic": "0.11.9",
65
- "@alepha/topic-redis": "0.11.9",
66
- "@alepha/vite": "0.11.9",
67
- "react": "^19.2.0",
68
- "react-dom": "^19.2.0"
69
- },
70
- "scripts": {
71
- "build": "node build.ts"
72
- },
73
- "files": [
74
- "**/*.js",
75
- "**/*.cjs",
76
- "**/*.d.ts"
43
+ "keywords": [
44
+ "alepha",
45
+ "aleph",
46
+ "framework",
47
+ "serverless",
48
+ "react",
49
+ "api"
77
50
  ],
51
+ "module": "./dist/index.js",
78
52
  "exports": {
79
53
  ".": {
80
- "import": "./core.js",
81
- "require": "./core.cjs",
82
- "types": "./core.d.ts"
83
- },
84
- "./api/files": {
85
- "import": "./api/files.js",
86
- "require": "./api/files.cjs",
87
- "types": "./api/files.d.ts"
88
- },
89
- "./api/jobs": {
90
- "import": "./api/jobs.js",
91
- "require": "./api/jobs.cjs",
92
- "types": "./api/jobs.d.ts"
93
- },
94
- "./api/notifications": {
95
- "import": "./api/notifications.js",
96
- "require": "./api/notifications.cjs",
97
- "types": "./api/notifications.d.ts"
98
- },
99
- "./api/users": {
100
- "import": "./api/users.js",
101
- "require": "./api/users.cjs",
102
- "types": "./api/users.d.ts"
103
- },
104
- "./api/verifications": {
105
- "import": "./api/verifications.js",
106
- "require": "./api/verifications.cjs",
107
- "types": "./api/verifications.d.ts"
108
- },
109
- "./batch": {
110
- "import": "./batch.js",
111
- "require": "./batch.cjs",
112
- "types": "./batch.d.ts"
113
- },
114
- "./bucket": {
115
- "import": "./bucket.js",
116
- "require": "./bucket.cjs",
117
- "types": "./bucket.d.ts"
118
- },
119
- "./cache": {
120
- "import": "./cache.js",
121
- "require": "./cache.cjs",
122
- "types": "./cache.d.ts"
123
- },
124
- "./cache/redis": {
125
- "import": "./cache/redis.js",
126
- "require": "./cache/redis.cjs",
127
- "types": "./cache/redis.d.ts"
128
- },
129
- "./command": {
130
- "import": "./command.js",
131
- "require": "./command.cjs",
132
- "types": "./command.d.ts"
133
- },
134
- "./core": {
135
- "import": "./core.js",
136
- "require": "./core.cjs",
137
- "types": "./core.d.ts"
138
- },
139
- "./datetime": {
140
- "import": "./datetime.js",
141
- "require": "./datetime.cjs",
142
- "types": "./datetime.d.ts"
143
- },
144
- "./devtools": {
145
- "import": "./devtools.js",
146
- "require": "./devtools.cjs",
147
- "types": "./devtools.d.ts"
148
- },
149
- "./email": {
150
- "import": "./email.js",
151
- "require": "./email.cjs",
152
- "types": "./email.d.ts"
153
- },
154
- "./fake": {
155
- "import": "./fake.js",
156
- "require": "./fake.cjs",
157
- "types": "./fake.d.ts"
158
- },
159
- "./file": {
160
- "import": "./file.js",
161
- "require": "./file.cjs",
162
- "types": "./file.d.ts"
163
- },
164
- "./lock": {
165
- "import": "./lock.js",
166
- "require": "./lock.cjs",
167
- "types": "./lock.d.ts"
168
- },
169
- "./lock/redis": {
170
- "import": "./lock/redis.js",
171
- "require": "./lock/redis.cjs",
172
- "types": "./lock/redis.d.ts"
173
- },
174
- "./logger": {
175
- "import": "./logger.js",
176
- "require": "./logger.cjs",
177
- "types": "./logger.d.ts"
178
- },
179
- "./postgres": {
180
- "import": "./postgres.js",
181
- "require": "./postgres.cjs",
182
- "types": "./postgres.d.ts"
183
- },
184
- "./queue": {
185
- "import": "./queue.js",
186
- "require": "./queue.cjs",
187
- "types": "./queue.d.ts"
188
- },
189
- "./queue/redis": {
190
- "import": "./queue/redis.js",
191
- "require": "./queue/redis.cjs",
192
- "types": "./queue/redis.d.ts"
193
- },
194
- "./react": {
195
- "import": "./react.js",
196
- "require": "./react.cjs",
197
- "types": "./react.d.ts"
198
- },
199
- "./react/auth": {
200
- "import": "./react/auth.js",
201
- "require": "./react/auth.cjs",
202
- "types": "./react/auth.d.ts"
203
- },
204
- "./react/form": {
205
- "import": "./react/form.js",
206
- "require": "./react/form.cjs",
207
- "types": "./react/form.d.ts"
208
- },
209
- "./react/head": {
210
- "import": "./react/head.js",
211
- "require": "./react/head.cjs",
212
- "types": "./react/head.d.ts"
213
- },
214
- "./react/i18n": {
215
- "import": "./react/i18n.js",
216
- "require": "./react/i18n.cjs",
217
- "types": "./react/i18n.d.ts"
218
- },
219
- "./redis": {
220
- "import": "./redis.js",
221
- "require": "./redis.cjs",
222
- "types": "./redis.d.ts"
223
- },
224
- "./retry": {
225
- "import": "./retry.js",
226
- "require": "./retry.cjs",
227
- "types": "./retry.d.ts"
228
- },
229
- "./router": {
230
- "import": "./router.js",
231
- "require": "./router.cjs",
232
- "types": "./router.d.ts"
233
- },
234
- "./scheduler": {
235
- "import": "./scheduler.js",
236
- "require": "./scheduler.cjs",
237
- "types": "./scheduler.d.ts"
238
- },
239
- "./security": {
240
- "import": "./security.js",
241
- "require": "./security.cjs",
242
- "types": "./security.d.ts"
243
- },
244
- "./server": {
245
- "import": "./server.js",
246
- "require": "./server.cjs",
247
- "types": "./server.d.ts"
248
- },
249
- "./server/cache": {
250
- "import": "./server/cache.js",
251
- "require": "./server/cache.cjs",
252
- "types": "./server/cache.d.ts"
253
- },
254
- "./server/compress": {
255
- "import": "./server/compress.js",
256
- "require": "./server/compress.cjs",
257
- "types": "./server/compress.d.ts"
258
- },
259
- "./server/cookies": {
260
- "import": "./server/cookies.js",
261
- "require": "./server/cookies.cjs",
262
- "types": "./server/cookies.d.ts"
263
- },
264
- "./server/cors": {
265
- "import": "./server/cors.js",
266
- "require": "./server/cors.cjs",
267
- "types": "./server/cors.d.ts"
268
- },
269
- "./server/health": {
270
- "import": "./server/health.js",
271
- "require": "./server/health.cjs",
272
- "types": "./server/health.d.ts"
273
- },
274
- "./server/helmet": {
275
- "import": "./server/helmet.js",
276
- "require": "./server/helmet.cjs",
277
- "types": "./server/helmet.d.ts"
278
- },
279
- "./server/links": {
280
- "import": "./server/links.js",
281
- "require": "./server/links.cjs",
282
- "types": "./server/links.d.ts"
283
- },
284
- "./server/metrics": {
285
- "import": "./server/metrics.js",
286
- "require": "./server/metrics.cjs",
287
- "types": "./server/metrics.d.ts"
288
- },
289
- "./server/multipart": {
290
- "import": "./server/multipart.js",
291
- "require": "./server/multipart.cjs",
292
- "types": "./server/multipart.d.ts"
293
- },
294
- "./server/proxy": {
295
- "import": "./server/proxy.js",
296
- "require": "./server/proxy.cjs",
297
- "types": "./server/proxy.d.ts"
298
- },
299
- "./server/security": {
300
- "import": "./server/security.js",
301
- "require": "./server/security.cjs",
302
- "types": "./server/security.d.ts"
303
- },
304
- "./server/static": {
305
- "import": "./server/static.js",
306
- "require": "./server/static.cjs",
307
- "types": "./server/static.d.ts"
308
- },
309
- "./server/swagger": {
310
- "import": "./server/swagger.js",
311
- "require": "./server/swagger.cjs",
312
- "types": "./server/swagger.d.ts"
313
- },
314
- "./topic": {
315
- "import": "./topic.js",
316
- "require": "./topic.cjs",
317
- "types": "./topic.d.ts"
318
- },
319
- "./topic/redis": {
320
- "import": "./topic/redis.js",
321
- "require": "./topic/redis.cjs",
322
- "types": "./topic/redis.d.ts"
323
- },
324
- "./vite": {
325
- "import": "./vite.js",
326
- "require": "./vite.cjs",
327
- "types": "./vite.d.ts"
54
+ "types": "./dist/index.d.ts",
55
+ "import": "./dist/index.js",
56
+ "require": "./dist/index.cjs"
328
57
  }
329
- },
330
- "keywords": [
331
- "alepha",
332
- "api-files",
333
- "api-jobs",
334
- "api-notifications",
335
- "api-users",
336
- "api-verifications",
337
- "batch",
338
- "bucket",
339
- "cache",
340
- "cache-redis",
341
- "command",
342
- "core",
343
- "datetime",
344
- "devtools",
345
- "email",
346
- "fake",
347
- "file",
348
- "lock",
349
- "lock-redis",
350
- "logger",
351
- "postgres",
352
- "queue",
353
- "queue-redis",
354
- "react",
355
- "react-auth",
356
- "react-form",
357
- "react-head",
358
- "react-i18n",
359
- "redis",
360
- "retry",
361
- "router",
362
- "scheduler",
363
- "security",
364
- "server",
365
- "server-cache",
366
- "server-compress",
367
- "server-cookies",
368
- "server-cors",
369
- "server-health",
370
- "server-helmet",
371
- "server-links",
372
- "server-metrics",
373
- "server-multipart",
374
- "server-proxy",
375
- "server-security",
376
- "server-static",
377
- "server-swagger",
378
- "topic",
379
- "topic-redis",
380
- "vite"
381
- ]
58
+ }
382
59
  }
@@ -0,0 +1,33 @@
1
+ export const biomeJson = `
2
+ {
3
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
4
+ "vcs": {
5
+ "enabled": true,
6
+ "clientKind": "git"
7
+ },
8
+ "files": {
9
+ "ignoreUnknown": true,
10
+ "includes": ["**", "!node_modules", "!dist"]
11
+ },
12
+ "formatter": {
13
+ "enabled": true,
14
+ "indentStyle": "space"
15
+ },
16
+ "linter": {
17
+ "enabled": true,
18
+ "rules": {
19
+ "recommended": true
20
+ },
21
+ "domains": {
22
+ "react": "recommended"
23
+ }
24
+ },
25
+ "assist": {
26
+ "actions": {
27
+ "source": {
28
+ "organizeImports": "on"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ `.trim()
@@ -0,0 +1,18 @@
1
+ export const tsconfigJson = `
2
+ {
3
+ "compilerOptions": {
4
+ "module": "nodenext",
5
+ "target": "esnext",
6
+ "strict": true,
7
+ "jsx": "react-jsx",
8
+ "verbatimModuleSyntax": true,
9
+ "isolatedModules": true,
10
+ "moduleDetection": "force",
11
+ "skipLibCheck": true,
12
+ "resolveJsonModule": true,
13
+ "noEmit": true,
14
+ "allowImportingTsExtensions": true
15
+ },
16
+ "exclude": ["node_modules", "dist"]
17
+ }
18
+ `.trim();
@@ -0,0 +1,14 @@
1
+ export const viteConfigTs = (
2
+ serverEntry?: string,
3
+ ) => `
4
+ import { viteAlepha } from "@alepha/vite";
5
+
6
+ export default {
7
+ plugins: [
8
+ viteAlepha(${serverEntry ? `{ serverEntry: "${serverEntry}" }` : ""}),
9
+ ],
10
+ test: {
11
+ globals: true,
12
+ },
13
+ };
14
+ `.trim()
@@ -0,0 +1,41 @@
1
+ import { $command } from "@alepha/command";
2
+ import { $inject, t } from "@alepha/core";
3
+ import { $logger } from "@alepha/logger";
4
+ import { ProcessRunner } from "../services/ProcessRunner.ts";
5
+ import { ProjectUtils } from "../services/ProjectUtils.ts";
6
+
7
+ export class BiomeCommands {
8
+ protected readonly log = $logger();
9
+ protected readonly runner = $inject(ProcessRunner);
10
+ protected readonly utils = $inject(ProjectUtils);
11
+
12
+ protected readonly biomeFlags = t.object({
13
+ config: t.optional(
14
+ t.text({
15
+ aliases: ["c"],
16
+ }),
17
+ ),
18
+ });
19
+
20
+ public readonly format = $command({
21
+ name: "format",
22
+ description: "Format the codebase using Biome",
23
+ flags: this.biomeFlags,
24
+ handler: async ({ flags }) => {
25
+ const configPath = await this.utils.getBiomeConfigPath(flags.config);
26
+ await this.runner.exec(`biome format --fix --config-path=${configPath}`);
27
+ },
28
+ });
29
+
30
+ public readonly lint = $command({
31
+ name: "lint",
32
+ description: "Run linter across the codebase using Biome",
33
+ flags: this.biomeFlags,
34
+ handler: async ({ flags }) => {
35
+ const configPath = await this.utils.getBiomeConfigPath(flags.config);
36
+ await this.runner.exec(
37
+ `biome check --formatter-enabled=false --fix --config-path=${configPath}`,
38
+ );
39
+ },
40
+ });
41
+ }