@reliverse/dler 1.7.94 → 1.7.96

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 (33) hide show
  1. package/bin/app/better/auth/cmd.js +4 -2
  2. package/bin/app/build/impl.d.ts +1 -1
  3. package/bin/app/build/postbuild.js +1 -1
  4. package/bin/app/build/prebuild.js +1 -1
  5. package/bin/app/cli/impl.js +1 -1
  6. package/bin/app/cmds.d.ts +71 -4
  7. package/bin/app/cmds.js +25 -3
  8. package/bin/app/config/cfg-def-utils.js +3 -3
  9. package/bin/app/config/cfg-detect.js +1 -1
  10. package/bin/app/config/cfg-prepare.js +1 -1
  11. package/bin/app/config/cfg-reltypes-content.js +1 -1
  12. package/bin/app/config/constants.d.ts +1 -1
  13. package/bin/app/config/constants.js +1 -1
  14. package/bin/app/init/init-utils/mm-deprecated/editor-menu.js +2 -2
  15. package/bin/app/init/mm-deprecated/drizzle/manageDrizzleSchema.js +1 -1
  16. package/bin/app/init/mm-deprecated/feature-add.js +2 -2
  17. package/bin/app/init/mm-deprecated/feature-rm.js +5 -5
  18. package/bin/app/init/use-template/cp-impl.js +1 -1
  19. package/bin/app/migrate/codemods/anything-bun.js +1 -1
  20. package/bin/app/providers/better-t-stack/packed/addons.js +1 -1
  21. package/bin/app/providers/better-t-stack/packed/api.js +2 -2
  22. package/bin/app/providers/better-t-stack/packed/auth.js +3 -3
  23. package/bin/app/providers/better-t-stack/packed/backend.js +1 -1
  24. package/bin/app/providers/better-t-stack/packed/examples.js +3 -3
  25. package/bin/app/providers/better-t-stack/packed/frontend.js +6 -6
  26. package/bin/app/providers/better-t-stack/types.d.ts +7 -7
  27. package/bin/app/pub/impl.d.ts +1 -1
  28. package/bin/app/rempts/cmd.js +15 -15
  29. package/bin/app/utils/downloading/downloadI18nFiles.js +4 -4
  30. package/bin/app/utils/schemaMemory.d.ts +1 -1
  31. package/bin/app/web/README.md +1 -1
  32. package/bin/dler.js +1 -1
  33. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { relinka } from "@reliverse/relinka";
4
4
  import { defineArgs, defineCommand, runCmd } from "@reliverse/rempts";
5
5
  import { execaCommand } from "execa";
6
6
  import MagicString from "magic-string";
7
- import { getAuthGenerateCmd } from "@/app/cmds";
7
+ import { getBetterAuthGenerateCmd } from "../../cmds.js";
8
8
  import { configPath, schemaPath } from "./consts.js";
9
9
  const notice = `/**
10
10
  * THIS FILE IS AUTO-GENERATED - DO NOT EDIT DIRECTLY
@@ -43,7 +43,9 @@ export default defineCommand({
43
43
  relinka("error", "Schema file does not exist; tried:", args.schema);
44
44
  process.exit(1);
45
45
  }
46
- await runCmd(await getAuthGenerateCmd(), [`--config ${configPath} --output ${schemaPath}`]);
46
+ await runCmd(await getBetterAuthGenerateCmd(), [
47
+ `--config ${configPath} --output ${schemaPath}`
48
+ ]);
47
49
  const filePath = path.resolve(schemaPath);
48
50
  const originalContent = await fs.readFile(filePath, "utf8");
49
51
  const s = new MagicString(originalContent);
@@ -2,7 +2,7 @@ import type { DlerConfig } from "../types/mod.js";
2
2
  /**
3
3
  * Main entry point for the dler build process.
4
4
  * Handles building for both main project and libraries.
5
- * @see `src/app/pub/impl.ts` for pub main function implementation.
5
+ * @see `src-ts/app/pub/impl.ts` for pub main function implementation.
6
6
  */
7
7
  export declare function dlerBuild(isDev: boolean, config?: DlerConfig, debugOnlyCopyNonBuildFiles?: boolean, debugDontCopyNonBuildFiles?: boolean, disableOwnSpinner?: boolean): Promise<{
8
8
  timer: any;
@@ -3,7 +3,7 @@ import fs from "@reliverse/relifso";
3
3
  import { relinka } from "@reliverse/relinka";
4
4
  import { runCmd } from "@reliverse/rempts";
5
5
  import { glob } from "tinyglobby";
6
- import { getCheckCmd } from "@/app/cmds";
6
+ import { getCheckCmd } from "../cmds.js";
7
7
  import { PROJECT_ROOT } from "../config/constants.js";
8
8
  import { getConfigDler } from "../config/load.js";
9
9
  import { applyMagicSpells } from "../magic/magic-apply.js";
@@ -3,7 +3,7 @@ import fs from "@reliverse/relifso";
3
3
  import { relinka } from "@reliverse/relinka";
4
4
  import { runCmd } from "@reliverse/rempts";
5
5
  import { glob } from "tinyglobby";
6
- import { getCheckCmd } from "@/app/cmds";
6
+ import { getCheckCmd } from "../cmds.js";
7
7
  import { PROJECT_ROOT } from "../config/constants.js";
8
8
  import { executeCommand, executeDlerHooks, isCommandAvailable } from "./ppb-utils.js";
9
9
  const createToolRunner = () => ({
@@ -1,7 +1,7 @@
1
1
  import { runCmd, selectPrompt } from "@reliverse/rempts";
2
2
  import { generate } from "random-words";
3
- import { getWebCmd } from "@/app/cmds";
4
3
  import { aiMenu } from "../ai/ai-menu.js";
4
+ import { getWebCmd } from "../cmds.js";
5
5
  import { detectProject } from "../config/cfg-detect.js";
6
6
  import { cliJsrPath, UNKNOWN_VALUE } from "../config/constants.js";
7
7
  import { ad, getRandomMessage, getWelcomeTitle, premium } from "../db/messages.js";
package/bin/app/cmds.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  import type { Command } from "@reliverse/rempts";
2
- export declare const getWebCmd: () => Promise<Command<import("@reliverse/rempts").EmptyArgs>>;
3
- export declare const getAuthCmd: () => Promise<Command<import("@reliverse/rempts").EmptyArgs>>;
4
- export declare const getAuthGenerateCmd: () => Promise<Command<import("@reliverse/rempts").EmptyArgs>>;
5
2
  interface CommandArgsMap {
3
+ add: {};
6
4
  agg: {
7
5
  imports?: boolean;
8
6
  input?: string;
@@ -21,13 +19,26 @@ interface CommandArgsMap {
21
19
  typesOut?: string;
22
20
  nonInteractive?: boolean;
23
21
  };
22
+ ai: {};
23
+ better_auth: {
24
+ config: string;
25
+ schema: string;
26
+ };
27
+ better_auth_generate: {};
28
+ better_auth_generateSecret: {};
29
+ better_auth_init: {};
30
+ better_auth_migrate: {
31
+ cwd?: string;
32
+ config?: string;
33
+ y?: boolean;
34
+ };
24
35
  build: {
25
36
  dev?: boolean;
26
37
  debugOnlyCopyNonBuildFiles?: boolean;
27
38
  debugDontCopyNonBuildFiles?: boolean;
28
39
  };
29
40
  build_binary: {
30
- input?: string;
41
+ input: string;
31
42
  targets?: string;
32
43
  outdir?: string;
33
44
  minify?: boolean;
@@ -37,6 +48,10 @@ interface CommandArgsMap {
37
48
  parallel?: boolean;
38
49
  external?: string[];
39
50
  };
51
+ catalog: {
52
+ action?: string;
53
+ cwd?: string;
54
+ };
40
55
  check: {
41
56
  dev?: boolean;
42
57
  directory?: string;
@@ -52,6 +67,14 @@ interface CommandArgsMap {
52
67
  fix?: boolean;
53
68
  depth?: number;
54
69
  };
70
+ cli: {};
71
+ clone: {};
72
+ cmod: {};
73
+ config: {
74
+ mode?: string;
75
+ tool?: string;
76
+ update?: boolean;
77
+ };
55
78
  conv: {};
56
79
  create: {
57
80
  template?: string;
@@ -63,6 +86,7 @@ interface CommandArgsMap {
63
86
  concurrency?: string;
64
87
  cwd?: string;
65
88
  };
89
+ env: {};
66
90
  fs: {
67
91
  mode: "copy" | "rm" | "rename";
68
92
  target: string;
@@ -79,6 +103,7 @@ interface CommandArgsMap {
79
103
  useDtsTxtForPrepareMyCLI?: boolean;
80
104
  };
81
105
  get: {};
106
+ help: {};
82
107
  init: {};
83
108
  inject: {};
84
109
  install: {
@@ -90,11 +115,15 @@ interface CommandArgsMap {
90
115
  silent?: boolean;
91
116
  recreateLockFile?: boolean;
92
117
  linter?: boolean;
118
+ filter?: string[];
93
119
  };
120
+ invoke: {};
94
121
  libs: {
95
122
  init: string;
96
123
  overwrite?: boolean;
97
124
  };
125
+ login: {};
126
+ logout: {};
98
127
  magic: {
99
128
  targets: string[];
100
129
  lib?: string;
@@ -103,6 +132,7 @@ interface CommandArgsMap {
103
132
  stopOnError?: boolean;
104
133
  about?: boolean;
105
134
  };
135
+ memory: {};
106
136
  merge: {
107
137
  s?: string[];
108
138
  d?: string;
@@ -142,6 +172,7 @@ interface CommandArgsMap {
142
172
  minify?: boolean;
143
173
  target?: string;
144
174
  };
175
+ mrse: {};
145
176
  pack: {
146
177
  input: string;
147
178
  output?: string;
@@ -170,6 +201,7 @@ interface CommandArgsMap {
170
201
  workspace?: boolean;
171
202
  silent?: boolean;
172
203
  linter?: boolean;
204
+ filter?: string[];
173
205
  standalone?: boolean;
174
206
  };
175
207
  rempts: {
@@ -179,11 +211,14 @@ interface CommandArgsMap {
179
211
  outFile?: string;
180
212
  cmdDirs?: string[];
181
213
  };
214
+ schema: {};
182
215
  split: {
183
216
  directory: string;
184
217
  fileLineThreshold: number;
185
218
  funcLineThreshold: number;
186
219
  };
220
+ studio: {};
221
+ toolbox: {};
187
222
  transform: {};
188
223
  update: {
189
224
  name?: string[];
@@ -192,10 +227,17 @@ interface CommandArgsMap {
192
227
  linker?: "isolated" | "hoisted";
193
228
  global?: boolean;
194
229
  interactive?: boolean;
230
+ filter?: string[];
231
+ recursive?: boolean;
232
+ };
233
+ update_migrate: {
234
+ interactive?: boolean;
195
235
  };
196
236
  upgrade: {
197
237
  interactive?: boolean;
198
238
  };
239
+ upload: {};
240
+ web: {};
199
241
  x: {
200
242
  action: string;
201
243
  name?: string;
@@ -214,31 +256,56 @@ interface CommandArgsMap {
214
256
  };
215
257
  }
216
258
  export declare function loadTypedCommand<T extends keyof CommandArgsMap>(cmdName: T): Promise<Command>;
259
+ export declare const getAddCmd: () => Promise<Command>;
217
260
  export declare const getAggCmd: () => Promise<Command>;
261
+ export declare const getAiCmd: () => Promise<Command>;
262
+ export declare const getBetterAuthCmd: () => Promise<Command>;
263
+ export declare const getBetterAuthGenerateCmd: () => Promise<Command>;
264
+ export declare const getBetterAuthGenerateSecretCmd: () => Promise<Command>;
265
+ export declare const getBetterAuthInitCmd: () => Promise<Command>;
266
+ export declare const getBetterAuthMigrateCmd: () => Promise<Command>;
218
267
  export declare const getBuildCmd: () => Promise<Command>;
219
268
  export declare const getBuildBinaryCmd: () => Promise<Command>;
269
+ export declare const getCatalogCmd: () => Promise<Command>;
220
270
  export declare const getCheckCmd: () => Promise<Command>;
271
+ export declare const getCliCmd: () => Promise<Command>;
272
+ export declare const getCloneCmd: () => Promise<Command>;
273
+ export declare const getCmodCmd: () => Promise<Command>;
274
+ export declare const getConfigCmd: () => Promise<Command>;
221
275
  export declare const getConvCmd: () => Promise<Command>;
222
276
  export declare const getCreateCmd: () => Promise<Command>;
277
+ export declare const getEnvCmd: () => Promise<Command>;
223
278
  export declare const getFsCmd: () => Promise<Command>;
224
279
  export declare const getGetCmd: () => Promise<Command>;
280
+ export declare const getHelpCmd: () => Promise<Command>;
225
281
  export declare const getInitCmd: () => Promise<Command>;
226
282
  export declare const getInjectCmd: () => Promise<Command>;
227
283
  export declare const getInstallCmd: () => Promise<Command>;
284
+ export declare const getInvokeCmd: () => Promise<Command>;
228
285
  export declare const getLibsCmd: () => Promise<Command>;
286
+ export declare const getLoginCmd: () => Promise<Command>;
287
+ export declare const getLogoutCmd: () => Promise<Command>;
229
288
  export declare const getMagicCmd: () => Promise<Command>;
289
+ export declare const getMemoryCmd: () => Promise<Command>;
230
290
  export declare const getMergeCmd: () => Promise<Command>;
231
291
  export declare const getMigrateCmd: () => Promise<Command>;
232
292
  export declare const getMkdistCmd: () => Promise<Command>;
293
+ export declare const getMrseCmd: () => Promise<Command>;
233
294
  export declare const getPackCmd: () => Promise<Command>;
234
295
  export declare const getPubCmd: () => Promise<Command>;
235
296
  export declare const getRemdnCmd: () => Promise<Command>;
236
297
  export declare const getRemoveCmd: () => Promise<Command>;
237
298
  export declare const getRemptsCmd: () => Promise<Command>;
299
+ export declare const getSchemaCmd: () => Promise<Command>;
238
300
  export declare const getSplitCmd: () => Promise<Command>;
301
+ export declare const getStudioCmd: () => Promise<Command>;
302
+ export declare const getToolboxCmd: () => Promise<Command>;
239
303
  export declare const getTransformCmd: () => Promise<Command>;
240
304
  export declare const getUpdateCmd: () => Promise<Command>;
305
+ export declare const getUpdateMigrateCmd: () => Promise<Command>;
241
306
  export declare const getUpgradeCmd: () => Promise<Command>;
307
+ export declare const getUploadCmd: () => Promise<Command>;
308
+ export declare const getWebCmd: () => Promise<Command>;
242
309
  export declare const getXCmd: () => Promise<Command>;
243
310
  export declare function callCmd<T extends keyof CommandArgsMap>(cmdName: T, args?: CommandArgsMap[T]): Promise<void>;
244
311
  export declare function getTypedCmd<T extends keyof CommandArgsMap>(cmdName: T): Promise<{
package/bin/app/cmds.js CHANGED
@@ -1,35 +1,57 @@
1
1
  import { callCmdImpl, getTypedCmdImpl, loadCommand } from "@reliverse/rempts";
2
- export const getWebCmd = async () => await loadCommand("./web/cmd");
3
- export const getAuthCmd = async () => await loadCommand("./auth/cmd");
4
- export const getAuthGenerateCmd = async () => await loadCommand("./auth/generate/cmd");
5
2
  export async function loadTypedCommand(cmdName) {
6
3
  return await loadCommand(cmdName);
7
4
  }
5
+ export const getAddCmd = async () => loadTypedCommand("add");
8
6
  export const getAggCmd = async () => loadTypedCommand("agg");
7
+ export const getAiCmd = async () => loadTypedCommand("ai");
8
+ export const getBetterAuthCmd = async () => loadTypedCommand("better_auth");
9
+ export const getBetterAuthGenerateCmd = async () => loadTypedCommand("better_auth_generate");
10
+ export const getBetterAuthGenerateSecretCmd = async () => loadTypedCommand("better_auth_generateSecret");
11
+ export const getBetterAuthInitCmd = async () => loadTypedCommand("better_auth_init");
12
+ export const getBetterAuthMigrateCmd = async () => loadTypedCommand("better_auth_migrate");
9
13
  export const getBuildCmd = async () => loadTypedCommand("build");
10
14
  export const getBuildBinaryCmd = async () => loadTypedCommand("build_binary");
15
+ export const getCatalogCmd = async () => loadTypedCommand("catalog");
11
16
  export const getCheckCmd = async () => loadTypedCommand("check");
17
+ export const getCliCmd = async () => loadTypedCommand("cli");
18
+ export const getCloneCmd = async () => loadTypedCommand("clone");
19
+ export const getCmodCmd = async () => loadTypedCommand("cmod");
20
+ export const getConfigCmd = async () => loadTypedCommand("config");
12
21
  export const getConvCmd = async () => loadTypedCommand("conv");
13
22
  export const getCreateCmd = async () => loadTypedCommand("create");
23
+ export const getEnvCmd = async () => loadTypedCommand("env");
14
24
  export const getFsCmd = async () => loadTypedCommand("fs");
15
25
  export const getGetCmd = async () => loadTypedCommand("get");
26
+ export const getHelpCmd = async () => loadTypedCommand("help");
16
27
  export const getInitCmd = async () => loadTypedCommand("init");
17
28
  export const getInjectCmd = async () => loadTypedCommand("inject");
18
29
  export const getInstallCmd = async () => loadTypedCommand("install");
30
+ export const getInvokeCmd = async () => loadTypedCommand("invoke");
19
31
  export const getLibsCmd = async () => loadTypedCommand("libs");
32
+ export const getLoginCmd = async () => loadTypedCommand("login");
33
+ export const getLogoutCmd = async () => loadTypedCommand("logout");
20
34
  export const getMagicCmd = async () => loadTypedCommand("magic");
35
+ export const getMemoryCmd = async () => loadTypedCommand("memory");
21
36
  export const getMergeCmd = async () => loadTypedCommand("merge");
22
37
  export const getMigrateCmd = async () => loadTypedCommand("migrate");
23
38
  export const getMkdistCmd = async () => loadTypedCommand("mkdist");
39
+ export const getMrseCmd = async () => loadTypedCommand("mrse");
24
40
  export const getPackCmd = async () => loadTypedCommand("pack");
25
41
  export const getPubCmd = async () => loadTypedCommand("pub");
26
42
  export const getRemdnCmd = async () => loadTypedCommand("remdn");
27
43
  export const getRemoveCmd = async () => loadTypedCommand("remove");
28
44
  export const getRemptsCmd = async () => loadTypedCommand("rempts");
45
+ export const getSchemaCmd = async () => loadTypedCommand("schema");
29
46
  export const getSplitCmd = async () => loadTypedCommand("split");
47
+ export const getStudioCmd = async () => loadTypedCommand("studio");
48
+ export const getToolboxCmd = async () => loadTypedCommand("toolbox");
30
49
  export const getTransformCmd = async () => loadTypedCommand("transform");
31
50
  export const getUpdateCmd = async () => loadTypedCommand("update");
51
+ export const getUpdateMigrateCmd = async () => loadTypedCommand("update_migrate");
32
52
  export const getUpgradeCmd = async () => loadTypedCommand("upgrade");
53
+ export const getUploadCmd = async () => loadTypedCommand("upload");
54
+ export const getWebCmd = async () => loadTypedCommand("web");
33
55
  export const getXCmd = async () => loadTypedCommand("x");
34
56
  export async function callCmd(cmdName, args) {
35
57
  await callCmdImpl(cmdName, args);
@@ -87,10 +87,10 @@ export async function generateDefaultRulesForProject(projectPath, isDev) {
87
87
  const hasPrismaFile = await fs.pathExists(path.join(projectPath, "prisma/schema.prisma"));
88
88
  const hasDrizzleFile = await fs.pathExists(path.join(projectPath, "drizzle.config.ts"));
89
89
  const hasNextAuthDir = await fs.pathExists(
90
- path.join(projectPath, "src/app/api/auth/[...nextauth]")
90
+ path.join(projectPath, "src-ts/app/api/auth/[...nextauth]")
91
91
  );
92
92
  const hasBetterAuthFile = await fs.pathExists(
93
- path.join(projectPath, "src/app/api/auth/[...all]/route.ts")
93
+ path.join(projectPath, "src-ts/app/api/auth/[...all]/route.ts")
94
94
  );
95
95
  const hasShadcnUi = await fs.pathExists(path.join(projectPath, "components/ui"));
96
96
  const hasClerk = "@clerk/nextjs" in deps;
@@ -120,7 +120,7 @@ export async function generateDefaultRulesForProject(projectPath, isDev) {
120
120
  const hasHono = "hono" in deps;
121
121
  const hasTrpc = "@trpc/server" in deps;
122
122
  const hasGraphql = "graphql" in deps || "apollo-server" in deps;
123
- const hasRest = await fs.pathExists(path.join(projectPath, "src/api")) || await fs.pathExists(path.join(projectPath, "src/app/api"));
123
+ const hasRest = await fs.pathExists(path.join(projectPath, "src/api")) || await fs.pathExists(path.join(projectPath, "src-ts/app/api"));
124
124
  const hasPg = "pg" in deps || "@neondatabase/serverless" in deps;
125
125
  const hasMysql = "mysql" in deps || "mysql2" in deps;
126
126
  const hasSqlite = "sqlite" in deps || "sqlite3" in deps || "better-sqlite3" in deps;
@@ -160,7 +160,7 @@ export async function detectFeatures(projectPath, packageJson) {
160
160
  const hasHono = "hono" in deps;
161
161
  const hasTrpc = "@trpc/server" in deps;
162
162
  const hasGraphql = "graphql" in deps || "apollo-server" in deps;
163
- const hasRest = await fs.pathExists(path.join(projectPath, "src/api")) || await fs.pathExists(path.join(projectPath, "src/app/api"));
163
+ const hasRest = await fs.pathExists(path.join(projectPath, "src/api")) || await fs.pathExists(path.join(projectPath, "src-ts/app/api"));
164
164
  const hasEslint = "eslint" in deps;
165
165
  const hasBiome = "@biomejs/biome" in deps;
166
166
  const hasStripe = "stripe" in deps || "@stripe/stripe-js" in deps;
@@ -242,7 +242,7 @@ export default defineConfig({
242
242
  enabled: false,
243
243
  format: "HH:mm:ss",
244
244
  },
245
- cleanupInterval: 10000,
245
+ cleanupInterval: 10_000,
246
246
  bufferSize: 4096,
247
247
  maxBufferAge: 5000,
248
248
  levels: {
@@ -1062,7 +1062,7 @@ export const DEFAULT_CONFIG_RELIVERSE: ReliverseConfig = {
1062
1062
  enabled: false,
1063
1063
  format: "HH:mm:ss",
1064
1064
  },
1065
- cleanupInterval: 10000, // 10 seconds
1065
+ cleanupInterval: 10_000, // 10 seconds
1066
1066
  bufferSize: 4096, // 4KB
1067
1067
  maxBufferAge: 5000, // 5 seconds
1068
1068
  levels: {
@@ -1,5 +1,5 @@
1
1
  export declare const PROJECT_ROOT: string;
2
- export declare const cliVersion = "1.7.94";
2
+ export declare const cliVersion = "1.7.96";
3
3
  export declare const cliName = "@reliverse/rse";
4
4
  export declare const rseName = "@reliverse/rse";
5
5
  export declare const dlerName = "@reliverse/dler";
@@ -1,7 +1,7 @@
1
1
  import os from "node:os";
2
2
  import path from "@reliverse/pathkit";
3
3
  export const PROJECT_ROOT = path.resolve(process.cwd());
4
- const version = "1.7.94";
4
+ const version = "1.7.96";
5
5
  export const cliVersion = version;
6
6
  export const cliName = "@reliverse/rse";
7
7
  export const rseName = "@reliverse/rse";
@@ -1,8 +1,8 @@
1
1
  import { re } from "@reliverse/relico";
2
2
  import { relinka } from "@reliverse/relinka";
3
3
  import { inputPrompt, runCmd, selectPrompt } from "@reliverse/rempts";
4
- import { getAuthCmd } from "@/app/cmds";
5
4
  import { useLanguine } from "../../../add/add-local/i18n/languine.js";
5
+ import { getBetterAuthCmd } from "../../../cmds.js";
6
6
  import { getProjectContent } from "../../../config/cfg-content.js";
7
7
  import { envArgImpl } from "../../../env/env-impl.js";
8
8
  import { manageDrizzleSchema } from "../../mm-deprecated/drizzle/manageDrizzleSchema.js";
@@ -148,7 +148,7 @@ export async function handleOpenProjectMenu(projects, isDev, memory, cwd, maskIn
148
148
  relinka("info", "The following args will be passed to the rse auth command:");
149
149
  relinka("log", `--config ${selectedProject.path}/src/lib/auth.ts`);
150
150
  relinka("log", `--output ${selectedProject.path}/src/db/schema/user/tables.ts`);
151
- await runCmd(await getAuthCmd(), [
151
+ await runCmd(await getBetterAuthCmd(), [
152
152
  `--config ${selectedProject.path}/src/lib/auth.ts --output ${selectedProject.path}/src/db/schema/user/tables.ts`
153
153
  ]);
154
154
  break;
@@ -11,7 +11,7 @@ import {
11
11
  setupDrizzle
12
12
  } from "./manageDrizzleSchemaUtils.js";
13
13
  export async function manageDrizzleSchema(cwd, isDev) {
14
- const singleSchemaDir = isDev ? path.join(cwd, "src/app/db") : path.join(cwd, "src/db");
14
+ const singleSchemaDir = isDev ? path.join(cwd, "src-ts/app/db") : path.join(cwd, "src/db");
15
15
  const multiSchemaDir = path.join(singleSchemaDir, "schema");
16
16
  let provider = await detectDatabaseProvider(cwd);
17
17
  if (!provider) {
@@ -347,7 +347,7 @@ export const INTEGRATION_CONFIGS = {
347
347
  } = authClient;`
348
348
  },
349
349
  {
350
- path: "src/app/auth/sign-in/page.tsx",
350
+ path: "src-ts/app/auth/sign-in/page.tsx",
351
351
  content: `"use client";
352
352
  import { useState } from "react";
353
353
  import { authClient } from "@/lib/auth-client";
@@ -430,7 +430,7 @@ export const INTEGRATION_CONFIGS = {
430
430
  }`
431
431
  },
432
432
  {
433
- path: "src/app/auth/error/page.tsx",
433
+ path: "src-ts/app/auth/error/page.tsx",
434
434
  content: `"use client";
435
435
  import { useSearchParams } from "next/navigation";
436
436
  export default function AuthErrorPage() {
@@ -29,11 +29,11 @@ export const REMOVAL_CONFIGS = {
29
29
  files: [
30
30
  "src/lib/auth.ts",
31
31
  "src/lib/auth-client.ts",
32
- "src/app/api/auth/[...nextauth]/route.ts",
33
- "src/app/api/auth/[...all]/route.ts",
32
+ "src-ts/app/api/auth/[...nextauth]/route.ts",
33
+ "src-ts/app/api/auth/[...all]/route.ts",
34
34
  "middleware.ts"
35
35
  ],
36
- directories: ["src/app/api/auth"],
36
+ directories: ["src-ts/app/api/auth"],
37
37
  scripts: ["db:generate", "db:migrate"],
38
38
  envVars: [
39
39
  "NEXTAUTH_SECRET",
@@ -54,8 +54,8 @@ export const REMOVAL_CONFIGS = {
54
54
  name: "Payments",
55
55
  dependencies: ["stripe", "@polar-sh/sdk"],
56
56
  devDependencies: [],
57
- files: ["src/lib/stripe.ts", "src/app/api/stripe/webhook/route.ts"],
58
- directories: ["src/app/api/stripe"],
57
+ files: ["src/lib/stripe.ts", "src-ts/app/api/stripe/webhook/route.ts"],
58
+ directories: ["src-ts/app/api/stripe"],
59
59
  scripts: [],
60
60
  envVars: ["STRIPE_SECRET_KEY", "STRIPE_WEBHOOK_SECRET", "STRIPE_PRICE_ID", "POLAR_TOKEN"]
61
61
  },
@@ -70,7 +70,7 @@ export async function initializeProjectConfig(projectName, _memory, config, skip
70
70
  };
71
71
  }
72
72
  export async function setupI18nSupport(projectPath, config) {
73
- const i18nFolderExists = await fs.pathExists(path.join(projectPath, "src/app/[locale]")) || await fs.pathExists(path.join(projectPath, "src/app/[lang]"));
73
+ const i18nFolderExists = await fs.pathExists(path.join(projectPath, "src-ts/app/[locale]")) || await fs.pathExists(path.join(projectPath, "src-ts/app/[lang]"));
74
74
  if (i18nFolderExists) {
75
75
  relinka("verbose", "i18n is already enabled in the template. No changes needed.");
76
76
  return true;
@@ -397,7 +397,7 @@ compilerOptions = "tsconfig.json"
397
397
  const generateDockerfile = (analysis) => {
398
398
  return `# Use Bun's official image
399
399
  FROM oven/bun:1 as base
400
- WORKDIR /usr/src/app
400
+ WORKDIR /usr/src-ts/app
401
401
  # Install dependencies
402
402
  COPY package.json bun.lock* ./
403
403
  RUN bun install --frozen-lockfile
@@ -146,7 +146,7 @@ export const DLER_TPL_ADDONS = {
146
146
  type: "binary",
147
147
  binaryHash: "dee83fc2fb"
148
148
  },
149
- "addons/pwa/apps/web/next/src/app/manifest.ts.hbs": {
149
+ "addons/pwa/apps/web/next/src-ts/app/manifest.ts.hbs": {
150
150
  metadata: {
151
151
  updatedAt: "2025-06-17T06:06:35.000Z",
152
152
  updatedHash: "6f8734ebe6"
@@ -188,7 +188,7 @@ export const protectedProcedure = publicProcedure.use(requireAuth);
188
188
  `,
189
189
  type: "text"
190
190
  },
191
- "api/orpc/server/next/src/app/rpc/[...all]/route.ts.hbs": {
191
+ "api/orpc/server/next/src-ts/app/rpc/[...all]/route.ts.hbs": {
192
192
  metadata: {
193
193
  updatedAt: "2025-06-17T06:06:35.000Z",
194
194
  updatedHash: "cdf4279672"
@@ -556,7 +556,7 @@ export const protectedProcedure = t.procedure.use(({ ctx, next }) => {
556
556
  `,
557
557
  type: "text"
558
558
  },
559
- "api/trpc/server/next/src/app/trpc/[trpc]/route.ts": {
559
+ "api/trpc/server/next/src-ts/app/trpc/[trpc]/route.ts": {
560
560
  metadata: {
561
561
  updatedAt: "2025-06-17T06:06:35.000Z",
562
562
  updatedHash: "1316017eae"
@@ -1403,7 +1403,7 @@ model Verification {
1403
1403
  `,
1404
1404
  type: "text"
1405
1405
  },
1406
- "auth/server/next/src/app/api/auth/[...all]/route.ts": {
1406
+ "auth/server/next/src-ts/app/api/auth/[...all]/route.ts": {
1407
1407
  metadata: {
1408
1408
  updatedAt: "2025-06-17T06:06:35.000Z",
1409
1409
  updatedHash: "1eeae5d0e3"
@@ -1727,7 +1727,7 @@ export const authClient = createAuthClient({
1727
1727
  `,
1728
1728
  type: "text"
1729
1729
  },
1730
- "auth/web/react/next/src/app/dashboard/page.tsx.hbs": {
1730
+ "auth/web/react/next/src-ts/app/dashboard/page.tsx.hbs": {
1731
1731
  metadata: {
1732
1732
  updatedAt: "2025-06-17T06:06:35.000Z",
1733
1733
  updatedHash: "354fab95c7"
@@ -1777,7 +1777,7 @@ export default function Dashboard() {
1777
1777
  `,
1778
1778
  type: "text"
1779
1779
  },
1780
- "auth/web/react/next/src/app/login/page.tsx": {
1780
+ "auth/web/react/next/src-ts/app/login/page.tsx": {
1781
1781
  metadata: {
1782
1782
  updatedAt: "2025-06-17T06:06:35.000Z",
1783
1783
  updatedHash: "bdd103cc10"
@@ -720,7 +720,7 @@ export default nextConfig;
720
720
  `,
721
721
  type: "text"
722
722
  },
723
- "backend/server/next/src/app/route.ts": {
723
+ "backend/server/next/src-ts/app/route.ts": {
724
724
  metadata: {
725
725
  updatedAt: "2025-06-17T06:06:35.000Z",
726
726
  updatedHash: "e40f5d7501"
@@ -486,7 +486,7 @@ export {};
486
486
  `,
487
487
  type: "text"
488
488
  },
489
- "examples/ai/server/next/src/app/ai/route.ts": {
489
+ "examples/ai/server/next/src-ts/app/ai/route.ts": {
490
490
  metadata: {
491
491
  updatedAt: "2025-06-17T06:06:35.000Z",
492
492
  updatedHash: "eee0d6a73d"
@@ -569,7 +569,7 @@ function getMessageText(message: any) {
569
569
  `,
570
570
  type: "text"
571
571
  },
572
- "examples/ai/web/react/next/src/app/ai/page.tsx": {
572
+ "examples/ai/web/react/next/src-ts/app/ai/page.tsx": {
573
573
  metadata: {
574
574
  updatedAt: "2025-06-17T06:06:35.000Z",
575
575
  updatedHash: "0c366c76eb"
@@ -2058,7 +2058,7 @@ function handleDeleteTodo(id: number) {
2058
2058
  `,
2059
2059
  type: "text"
2060
2060
  },
2061
- "examples/todo/web/react/next/src/app/todos/page.tsx.hbs": {
2061
+ "examples/todo/web/react/next/src-ts/app/todos/page.tsx.hbs": {
2062
2062
  metadata: {
2063
2063
  updatedAt: "2025-06-17T06:06:35.000Z",
2064
2064
  updatedHash: "dbf393c2f2"
@@ -2678,7 +2678,7 @@ export default config;
2678
2678
  `,
2679
2679
  type: "text"
2680
2680
  },
2681
- "frontend/react/next/src/app/favicon.ico": {
2681
+ "frontend/react/next/src-ts/app/favicon.ico": {
2682
2682
  metadata: {
2683
2683
  updatedAt: "2025-06-17T06:06:35.000Z",
2684
2684
  updatedHash: "9ecfcc8f0e"
@@ -2687,7 +2687,7 @@ export default config;
2687
2687
  type: "binary",
2688
2688
  binaryHash: "9ecfcc8f0e"
2689
2689
  },
2690
- "frontend/react/next/src/app/layout.tsx.hbs": {
2690
+ "frontend/react/next/src-ts/app/layout.tsx.hbs": {
2691
2691
  metadata: {
2692
2692
  updatedAt: "2025-06-17T06:06:35.000Z",
2693
2693
  updatedHash: "2b199051ab"
@@ -2732,7 +2732,7 @@ export default function RootLayout({
2732
2732
  `,
2733
2733
  type: "text"
2734
2734
  },
2735
- "frontend/react/next/src/app/page.tsx.hbs": {
2735
+ "frontend/react/next/src-ts/app/page.tsx.hbs": {
2736
2736
  metadata: {
2737
2737
  updatedAt: "2025-06-17T06:06:35.000Z",
2738
2738
  updatedHash: "78e7e7eea2"
@@ -5742,7 +5742,7 @@ dist-ssr
5742
5742
  },
5743
5743
  type: "json"
5744
5744
  },
5745
- "frontend/svelte/src/app.css": {
5745
+ "frontend/svelte/src-ts/app.css": {
5746
5746
  metadata: {
5747
5747
  updatedAt: "2025-06-17T06:06:35.000Z",
5748
5748
  updatedHash: "2b911b4424"
@@ -5754,7 +5754,7 @@ body {
5754
5754
  `,
5755
5755
  type: "text"
5756
5756
  },
5757
- "frontend/svelte/src/app.d.ts": {
5757
+ "frontend/svelte/src-ts/app.d.ts": {
5758
5758
  metadata: {
5759
5759
  updatedAt: "2025-06-17T06:06:35.000Z",
5760
5760
  updatedHash: "2f59b5d092"
@@ -5774,7 +5774,7 @@ export {};
5774
5774
  `,
5775
5775
  type: "text"
5776
5776
  },
5777
- "frontend/svelte/src/app.html": {
5777
+ "frontend/svelte/src-ts/app.html": {
5778
5778
  metadata: {
5779
5779
  updatedAt: "2025-06-17T06:06:35.000Z",
5780
5780
  updatedHash: "f980132c60"
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  export declare const DatabaseSchema: z.ZodEnum<{
3
3
  none: "none";
4
- sqlite: "sqlite";
5
4
  mysql: "mysql";
5
+ sqlite: "sqlite";
6
6
  mongodb: "mongodb";
7
7
  postgres: "postgres";
8
8
  }>;
@@ -17,11 +17,11 @@ export type ORM = z.infer<typeof ORMSchema>;
17
17
  export declare const BackendSchema: z.ZodEnum<{
18
18
  none: "none";
19
19
  hono: "hono";
20
+ convex: "convex";
20
21
  next: "next";
22
+ elysia: "elysia";
21
23
  express: "express";
22
24
  fastify: "fastify";
23
- elysia: "elysia";
24
- convex: "convex";
25
25
  }>;
26
26
  export type Backend = z.infer<typeof BackendSchema>;
27
27
  export declare const RuntimeSchema: z.ZodEnum<{
@@ -45,13 +45,13 @@ export declare const FrontendSchema: z.ZodEnum<{
45
45
  }>;
46
46
  export type Frontend = z.infer<typeof FrontendSchema>;
47
47
  export declare const AddonsSchema: z.ZodEnum<{
48
- none: "none";
49
48
  biome: "biome";
50
- tauri: "tauri";
49
+ none: "none";
51
50
  turborepo: "turborepo";
52
51
  starlight: "starlight";
53
- pwa: "pwa";
54
52
  husky: "husky";
53
+ pwa: "pwa";
54
+ tauri: "tauri";
55
55
  }>;
56
56
  export type Addons = z.infer<typeof AddonsSchema>;
57
57
  export declare const ExamplesSchema: z.ZodEnum<{
@@ -61,9 +61,9 @@ export declare const ExamplesSchema: z.ZodEnum<{
61
61
  }>;
62
62
  export type Examples = z.infer<typeof ExamplesSchema>;
63
63
  export declare const PackageManagerSchema: z.ZodEnum<{
64
+ bun: "bun";
64
65
  npm: "npm";
65
66
  pnpm: "pnpm";
66
- bun: "bun";
67
67
  }>;
68
68
  export type PackageManager = z.infer<typeof PackageManagerSchema>;
69
69
  export declare const DatabaseSetupSchema: z.ZodEnum<{
@@ -2,6 +2,6 @@ import type { DlerConfig } from "../types/mod.js";
2
2
  /**
3
3
  * Main entry point for the dler build and publish process.
4
4
  * Handles building and publishing for both main project and libraries.
5
- * @see `src/app/build/impl.ts` for build main function implementation.
5
+ * @see `src-ts/app/build/impl.ts` for build main function implementation.
6
6
  */
7
7
  export declare function dlerPub(isDev: boolean, config?: DlerConfig): Promise<void>;
@@ -26,11 +26,11 @@ export default defineCommand({
26
26
  outFile: {
27
27
  type: "string",
28
28
  description: "Output file path for exports (relative to workspace root)",
29
- default: "src/app/cmds.ts"
29
+ default: "src-ts/app/cmds.ts"
30
30
  },
31
31
  cmdDirs: {
32
32
  type: "array",
33
- description: "Command directories to scan (relative to src/app)"
33
+ description: "Command directories to scan (relative to src-ts/app)"
34
34
  }
35
35
  }),
36
36
  async run({ args }) {
@@ -68,7 +68,7 @@ export default defineCommand({
68
68
  return;
69
69
  }
70
70
  if (!cmdsRoot) {
71
- const defaultCmdsRoot = path.resolve("src/app");
71
+ const defaultCmdsRoot = path.resolve("src-ts/app");
72
72
  if (await fs.pathExists(defaultCmdsRoot)) {
73
73
  cmdsRoot = defaultCmdsRoot;
74
74
  } else {
@@ -101,8 +101,8 @@ export default defineCommand({
101
101
  didInit = true;
102
102
  }
103
103
  if (!args.init) {
104
- const root2 = path.resolve("src/app");
105
- const outPath2 = path.resolve(args.outFile ?? "src/app/cmds.ts");
104
+ const root2 = path.resolve("src-ts/app");
105
+ const outPath2 = path.resolve(args.outFile ?? "src-ts/app/cmds.ts");
106
106
  const cmdDirs2 = (args.cmdDirs ?? []).length > 0 ? args.cmdDirs ?? [] : await findCommandDirs(root2);
107
107
  if (cmdDirs2.length === 0) {
108
108
  relinka(
@@ -122,8 +122,8 @@ export default defineCommand({
122
122
  relinka("verbose", `Found ${cmdDirs2.length} command(s): ${cmdDirs2.join(", ")}`);
123
123
  return;
124
124
  }
125
- const root = path.resolve("src/app");
126
- const outPath = path.resolve(args.outFile ?? "src/app/cmds.ts");
125
+ const root = path.resolve("src-ts/app");
126
+ const outPath = path.resolve(args.outFile ?? "src-ts/app/cmds.ts");
127
127
  if (await fs.pathExists(outPath) && !args.overwrite) {
128
128
  relinka("warn", `\u274C File "${outPath}" already exists. Use --overwrite to overwrite.`);
129
129
  return;
@@ -164,7 +164,7 @@ await runCmd(cmd, [
164
164
  });
165
165
  async function handleDlerConfig() {
166
166
  const dlerConfigPath = path.resolve("reliverse.ts");
167
- let cmdsRoot = "src/app";
167
+ let cmdsRoot = "src-ts/app";
168
168
  let cliFilePath = "";
169
169
  try {
170
170
  const jiti = createJiti(import.meta.url);
@@ -174,7 +174,7 @@ async function handleDlerConfig() {
174
174
  const coreIsCLI = dlerConfig?.coreIsCLI;
175
175
  if (!coreIsCLI?.enabled || !coreIsCLI?.scripts) {
176
176
  cliFilePath = await ensureCliFile("src/cli.ts");
177
- cmdsRoot = "src/app";
177
+ cmdsRoot = "src-ts/app";
178
178
  } else {
179
179
  const firstScript = Object.values(coreIsCLI.scripts)[0];
180
180
  const scriptPath = path.resolve(firstScript);
@@ -189,16 +189,16 @@ async function handleDlerConfig() {
189
189
  }
190
190
  } else {
191
191
  relinka("warn", `${scriptPath} doesn't use @reliverse/rempts`);
192
- cmdsRoot = "src/app";
192
+ cmdsRoot = "src-ts/app";
193
193
  }
194
194
  } else {
195
195
  cliFilePath = await ensureCliFile(scriptPath);
196
- cmdsRoot = "src/app";
196
+ cmdsRoot = "src-ts/app";
197
197
  }
198
198
  }
199
199
  } catch {
200
200
  cliFilePath = await ensureCliFile("src/cli.ts");
201
- cmdsRoot = "src/app";
201
+ cmdsRoot = "src-ts/app";
202
202
  }
203
203
  return { cmdsRoot: path.resolve(cmdsRoot), cliFile: cliFilePath };
204
204
  }
@@ -235,7 +235,7 @@ async function findCommandDirs(root) {
235
235
  async function generateCommandArgsMap(cmdDirs) {
236
236
  let interfaceContent = "// Argument types for each command based on their defineArgs\ninterface CommandArgsMap {\n";
237
237
  for (const dir of cmdDirs) {
238
- const cmdPath = path.join("src/app", dir, "cmd.ts");
238
+ const cmdPath = path.join("src-ts/app", dir, "cmd.ts");
239
239
  try {
240
240
  if (await fs.pathExists(cmdPath)) {
241
241
  const content = await fs.readFile(cmdPath, "utf-8");
@@ -335,7 +335,7 @@ async function generateExports(cmdDirs) {
335
335
  "",
336
336
  'import type { Command } from "@reliverse/rempts";',
337
337
  "",
338
- 'import { loadCommand, callCmdImpl, getTypedCmdImpl } from "@reliverse/rempts";'
338
+ 'import { callCmdImpl, getTypedCmdImpl, loadCommand } from "@reliverse/rempts";'
339
339
  ];
340
340
  lines.push("", "// ========== TYPED COMMAND SYSTEM ==========", "");
341
341
  const commandArgsMap = await generateCommandArgsMap(cmdDirs);
@@ -414,7 +414,7 @@ const cliTemplate = `import { defineCommand, runMain } from "@reliverse/rempts";
414
414
  await runMain(
415
415
  defineCommand({
416
416
  // empty object activates file-based
417
- // commands in the src/app directory
417
+ // commands in the src-ts/app directory
418
418
  }),
419
419
  );
420
420
  `;
@@ -3,8 +3,8 @@ import fs, { ensuredir } from "@reliverse/relifso";
3
3
  import { relinka } from "@reliverse/relinka";
4
4
  async function isI18nAlreadySetup(projectPath) {
5
5
  const checkPaths = [
6
- "src/app/[locale]",
7
- "src/app/[lang]",
6
+ "src-ts/app/[locale]",
7
+ "src-ts/app/[lang]",
8
8
  "src/i18n",
9
9
  "src/locales",
10
10
  "src/translations",
@@ -25,7 +25,7 @@ export async function setupI18nFiles(projectPath) {
25
25
  return;
26
26
  }
27
27
  await ensuredir(projectPath);
28
- const layoutPath = path.join(projectPath, "src/app/layout.tsx");
28
+ const layoutPath = path.join(projectPath, "src-ts/app/layout.tsx");
29
29
  if (!await fs.pathExists(layoutPath)) {
30
30
  await ensuredir(path.dirname(layoutPath));
31
31
  const layoutContent = `
@@ -58,7 +58,7 @@ export function generateStaticParams() {
58
58
  await fs.writeFile(layoutPath, layoutContent);
59
59
  relinka("success", "Generated i18n layout file");
60
60
  }
61
- const pagePath = path.join(projectPath, "src/app/page.tsx");
61
+ const pagePath = path.join(projectPath, "src-ts/app/page.tsx");
62
62
  if (!await fs.pathExists(pagePath)) {
63
63
  const pageContent = `
64
64
  import { useTranslation } from "../i18n";
@@ -20,8 +20,8 @@ export declare const memorySchema: import("@sinclair/typebox").TObject<{
20
20
  vercelKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
21
  openaiKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
22
  name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
23
- githubUsername: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
23
  email: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ githubUsername: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
25
  vercelTeamId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
26
  vercelTeamSlug: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
27
  }>;
@@ -32,7 +32,7 @@ Gracefully shuts down the web server with proper user feedback
32
32
  ## Architecture
33
33
 
34
34
  ```bash
35
- src/app/web/src/
35
+ src-ts/app/web/src/
36
36
  ├── app/ # Server-side code
37
37
  │ ├── api/ # API handlers
38
38
  │ │ └── routes/ # API routes
package/bin/dler.js CHANGED
@@ -12,7 +12,7 @@ let isDev = process.env.DLER_DEV_MODE === "true";
12
12
  const main = defineCommand({
13
13
  meta: {
14
14
  name: "dler",
15
- version: "1.7.94",
15
+ version: "1.7.96",
16
16
  description: `Displays dler's command menu.
17
17
  To see ALL available commands and arguments, run: 'dler --help' (or 'dler <command> --help')
18
18
  Available menu commands: ${MENU_CMDS.join(", ")}`
package/package.json CHANGED
@@ -110,7 +110,7 @@
110
110
  "license": "MIT",
111
111
  "name": "@reliverse/dler",
112
112
  "type": "module",
113
- "version": "1.7.94",
113
+ "version": "1.7.96",
114
114
  "keywords": [
115
115
  "reliverse",
116
116
  "cli",