@reliverse/dler 1.7.152 → 1.7.153

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/impl/auth/impl/init.d.ts +2 -2
  2. package/bin/impl/build/impl.d.ts +7 -1
  3. package/bin/impl/build/impl.js +161 -1
  4. package/bin/impl/config/constants.d.ts +1 -1
  5. package/bin/impl/config/constants.js +1 -1
  6. package/bin/impl/providers/better-t-stack/types.d.ts +7 -7
  7. package/bin/impl/pub/impl.d.ts +6 -1
  8. package/bin/impl/pub/impl.js +176 -2
  9. package/bin/impl/schema/mod.d.ts +140 -0
  10. package/bin/impl/schema/mod.js +22 -0
  11. package/bin/impl/utils/workspace-prompt.d.ts +9 -0
  12. package/bin/impl/utils/workspace-prompt.js +46 -0
  13. package/bin/impl/utils/workspace-utils.d.ts +28 -0
  14. package/bin/impl/utils/workspace-utils.js +127 -0
  15. package/bin/mod.d.ts +2 -9
  16. package/bin/mod.js +9 -23
  17. package/package.json +2 -1
  18. package/bin/impl/migrate/codemods/anything-bun.d.ts +0 -5
  19. package/bin/impl/migrate/codemods/anything-bun.js +0 -577
  20. package/bin/impl/migrate/codemods/commander-rempts.d.ts +0 -4
  21. package/bin/impl/migrate/codemods/commander-rempts.js +0 -250
  22. package/bin/impl/migrate/codemods/console-relinka.d.ts +0 -3
  23. package/bin/impl/migrate/codemods/console-relinka.js +0 -142
  24. package/bin/impl/migrate/codemods/fs-relifso.d.ts +0 -8
  25. package/bin/impl/migrate/codemods/fs-relifso.js +0 -156
  26. package/bin/impl/migrate/codemods/monorepo-catalog.d.ts +0 -96
  27. package/bin/impl/migrate/codemods/monorepo-catalog.js +0 -517
  28. package/bin/impl/migrate/codemods/nodenext-bundler.d.ts +0 -10
  29. package/bin/impl/migrate/codemods/nodenext-bundler.js +0 -222
  30. package/bin/impl/migrate/codemods/path-pathkit.d.ts +0 -8
  31. package/bin/impl/migrate/codemods/path-pathkit.js +0 -143
  32. package/bin/impl/migrate/codemods/readdir-glob.d.ts +0 -8
  33. package/bin/impl/migrate/codemods/readdir-glob.js +0 -133
@@ -146,8 +146,8 @@ export declare const optionsSchema: z.ZodObject<{
146
146
  cwd: z.ZodString;
147
147
  config: z.ZodOptional<z.ZodString>;
148
148
  database: z.ZodOptional<z.ZodEnum<{
149
- mysql: "mysql";
150
149
  sqlite: "sqlite";
150
+ mysql: "mysql";
151
151
  mongodb: "mongodb";
152
152
  postgres: "postgres";
153
153
  mssql: "mssql";
@@ -165,7 +165,7 @@ export declare const optionsSchema: z.ZodObject<{
165
165
  }, z.core.$strip>;
166
166
  export declare const outroText = "\uD83E\uDD73 All Done, Happy Hacking!";
167
167
  export declare function getLatestNpmVersion(packageName: string): Promise<string>;
168
- export declare function getPackageManager(): Promise<"bun" | "npm" | "yarn" | "pnpm">;
168
+ export declare function getPackageManager(): Promise<"npm" | "yarn" | "pnpm" | "bun">;
169
169
  export declare function getEnvFiles(cwd: string): Promise<string[]>;
170
170
  export declare function updateEnvs({ envs, files, isCommented, }: {
171
171
  /**
@@ -1,11 +1,12 @@
1
1
  import type { ReliverseConfig } from "../schema/mod.js";
2
2
  import type { PerfTimer } from "../types/mod.js";
3
+ import type { WorkspacePackage } from "../utils/workspace-utils.js";
3
4
  /**
4
5
  * Main entry point for the rse build process.
5
6
  * Handles building for both main project and libraries.
6
7
  * @see `src/impl/pub/impl.ts` for pub main function implementation.
7
8
  */
8
- export declare function dlerBuild({ flow, timer, isDev, config, debugOnlyCopyNonBuildFiles, debugDontCopyNonBuildFiles, disableOwnSpinner, }: {
9
+ export declare function dlerBuild({ flow, timer, isDev, config, debugOnlyCopyNonBuildFiles, debugDontCopyNonBuildFiles, disableOwnSpinner, workspacePackages, enableCache, depsOnly, showGraph, cleanCacheFlag, }: {
9
10
  flow: "build" | "pub";
10
11
  timer: PerfTimer;
11
12
  isDev: boolean;
@@ -13,6 +14,11 @@ export declare function dlerBuild({ flow, timer, isDev, config, debugOnlyCopyNon
13
14
  debugOnlyCopyNonBuildFiles?: boolean;
14
15
  debugDontCopyNonBuildFiles?: boolean;
15
16
  disableOwnSpinner?: boolean;
17
+ workspacePackages?: WorkspacePackage[] | null;
18
+ enableCache?: boolean;
19
+ depsOnly?: boolean;
20
+ showGraph?: boolean;
21
+ cleanCacheFlag?: boolean;
16
22
  }): Promise<{
17
23
  timer: PerfTimer;
18
24
  effectiveConfig: any;
@@ -9,6 +9,17 @@ import { PROJECT_ROOT } from "../config/constants.js";
9
9
  import { getConfigDler } from "../config/load.js";
10
10
  import { removeDistFolders } from "../utils/utils-clean.js";
11
11
  import { handleDlerError } from "../utils/utils-error-cwd.js";
12
+ import { sortPackagesByDependencies } from "../utils/workspace-utils.js";
13
+ import {
14
+ cachePackageOutput,
15
+ cleanCache,
16
+ DependencyGraph,
17
+ findMonorepo,
18
+ hashPackage,
19
+ isPackageCached,
20
+ readMonorepoPackageJson,
21
+ restorePackageCache
22
+ } from "../../mod.js";
12
23
  import { createCompletionTexts } from "../utils/finish-text.js";
13
24
  import { dlerPostBuild, wrapper_CopyNonBuildFiles } from "./postbuild.js";
14
25
  import { dlerPreBuild } from "./prebuild.js";
@@ -19,7 +30,12 @@ export async function dlerBuild({
19
30
  config,
20
31
  debugOnlyCopyNonBuildFiles,
21
32
  debugDontCopyNonBuildFiles,
22
- disableOwnSpinner
33
+ disableOwnSpinner,
34
+ workspacePackages,
35
+ enableCache,
36
+ depsOnly,
37
+ showGraph,
38
+ cleanCacheFlag
23
39
  }) {
24
40
  let effectiveConfig = config;
25
41
  let shouldShowSpinner = false;
@@ -28,6 +44,118 @@ export async function dlerBuild({
28
44
  if (!effectiveConfig) {
29
45
  effectiveConfig = await getConfigDler();
30
46
  }
47
+ let monorepo = null;
48
+ let dependencyGraph = null;
49
+ if (enableCache || depsOnly || showGraph || cleanCacheFlag) {
50
+ monorepo = await findMonorepo();
51
+ if (monorepo) {
52
+ relinka("verbose", `Monorepo detected at: ${monorepo.root}`);
53
+ if (cleanCacheFlag) {
54
+ await cleanCache(monorepo);
55
+ relinka("log", "\u2713 Cache cleaned");
56
+ }
57
+ const { globby } = await import("globby");
58
+ const packageJsonGlobs = monorepo.packageGlobs.map((glob) => `${glob}/package.json`);
59
+ const matches = await globby(packageJsonGlobs, { cwd: monorepo.root, absolute: true });
60
+ const packages = [];
61
+ for (const packageJsonPath of matches) {
62
+ const pkg = await readMonorepoPackageJson(packageJsonPath);
63
+ if (pkg) {
64
+ packages.push(pkg);
65
+ }
66
+ }
67
+ dependencyGraph = new DependencyGraph(packages);
68
+ if (showGraph) {
69
+ dependencyGraph.print();
70
+ }
71
+ if (depsOnly) {
72
+ const activePackage = dependencyGraph.findActivePackage();
73
+ if (activePackage) {
74
+ const dependencies = dependencyGraph.getPackageDependenciesBuildOrder(activePackage.name);
75
+ relinka("info", `Building dependencies for ${activePackage.name}: ${dependencies.map((p) => p.name).join(", ")}`);
76
+ for (const pkg of dependencies) {
77
+ await buildCachedPackage(pkg, monorepo, enableCache || false);
78
+ }
79
+ relinka("log", "\u2713 Dependencies built");
80
+ return;
81
+ } else {
82
+ relinka("warn", "Not in a package directory, cannot determine dependencies");
83
+ }
84
+ }
85
+ } else {
86
+ relinka("warn", "Monorepo features requested but no monorepo detected");
87
+ }
88
+ }
89
+ if (workspacePackages && workspacePackages.length > 0) {
90
+ relinka("info", `Building ${workspacePackages.length} workspace package(s)`);
91
+ relinka("verbose", `Workspace packages: ${workspacePackages.map((p) => p.name).join(", ")}`);
92
+ const sortedPackages = sortPackagesByDependencies(workspacePackages);
93
+ for (const pkg of sortedPackages) {
94
+ relinka("info", `Building package: ${pkg.name}`);
95
+ const packageConfig = {
96
+ ...effectiveConfig,
97
+ // Override package-specific settings
98
+ projectName: pkg.name,
99
+ projectAuthor: "reliverse",
100
+ projectDescription: "Dler plugin for code migration and modernization codemods",
101
+ projectLicense: "MIT",
102
+ coreEntrySrcDir: path.join(pkg.path, "src"),
103
+ // Assume src dir in package
104
+ coreEntryFile: "mod.ts",
105
+ // Default entry file for workspace packages
106
+ // Override dist directories to be package-specific
107
+ distNpmDirName: path.join("dist-workspace", pkg.name, "npm"),
108
+ distJsrDirName: path.join("dist-workspace", pkg.name, "jsr"),
109
+ libsDirDist: path.join("dist-workspace", pkg.name, "libs"),
110
+ // Ensure it's treated as a library, not CLI
111
+ coreIsCLI: { enabled: false, scripts: {} },
112
+ // Use ESM format for workspace packages
113
+ transpileFormat: "esm",
114
+ transpileTarget: "node",
115
+ // Keep readable for libraries
116
+ transpileMinify: false,
117
+ transpileSourcemap: "none",
118
+ // Use package-specific package.json
119
+ corePackageJsonPath: pkg.packageJsonPath
120
+ };
121
+ await regular_buildFlow(timer, isDev, packageConfig);
122
+ await library_buildFlow(timer, isDev, packageConfig);
123
+ await binary_buildFlow(timer, isDev, packageConfig);
124
+ const distPackageJsonPath = path.join(packageConfig.distNpmDirName, "package.json");
125
+ relinka("verbose", `Copying package.json from ${pkg.packageJsonPath} to ${distPackageJsonPath}`);
126
+ await fs.copy(pkg.packageJsonPath, distPackageJsonPath);
127
+ const packageJsonContent = await fs.readFile(distPackageJsonPath, "utf-8");
128
+ const packageJson = JSON.parse(packageJsonContent);
129
+ packageJson.main = "./bin/mod.js";
130
+ packageJson.types = "./bin/mod.d.ts";
131
+ packageJson.exports = {
132
+ ".": {
133
+ "types": "./bin/mod.d.ts",
134
+ "default": "./bin/mod.js"
135
+ }
136
+ };
137
+ packageJson.files = ["bin"];
138
+ packageJson.module = "./bin/mod.js";
139
+ packageJson.publishConfig = { access: "public" };
140
+ if (!packageJson.homepage) {
141
+ packageJson.homepage = "https://docs.reliverse.org/cli";
142
+ }
143
+ if (!packageJson.bugs) {
144
+ packageJson.bugs = {
145
+ email: "blefnk@gmail.com",
146
+ url: `https://github.com/reliverse/dler/issues`
147
+ };
148
+ }
149
+ if (!packageJson.devDependencies) {
150
+ packageJson.devDependencies = {};
151
+ }
152
+ await fs.writeFile(distPackageJsonPath, JSON.stringify(packageJson, null, 2));
153
+ relinka("verbose", `Updated package.json paths to point to bin directory`);
154
+ relinka("success", `Successfully built package: ${pkg.name}`);
155
+ }
156
+ relinka("success", `Successfully built all ${workspacePackages.length} workspace package(s)`);
157
+ relinka("info", "Building main project and libraries...");
158
+ }
31
159
  shouldShowSpinner = effectiveConfig.displayBuildPubLogs === false && !disableOwnSpinner;
32
160
  const buildSteps = [
33
161
  "Loading configuration",
@@ -102,3 +230,35 @@ export async function dlerBuild({
102
230
  handleDlerError(error);
103
231
  }
104
232
  }
233
+ async function buildCachedPackage(pkg, monorepo, enableCache) {
234
+ if (!pkg.buildScript) {
235
+ relinka("log", `\u2713 ${pkg.name}: Nothing to build`);
236
+ return;
237
+ }
238
+ relinka("log", `\u25D0 ${pkg.name}: ${pkg.buildScript}`);
239
+ if (enableCache) {
240
+ const { packageHash } = await hashPackage(pkg);
241
+ if (await isPackageCached(monorepo, pkg, packageHash) && pkg.config.cache) {
242
+ await restorePackageCache(monorepo, pkg, packageHash);
243
+ relinka("log", `\u2713 ${pkg.name}: Cached!`);
244
+ return;
245
+ }
246
+ const { execaCommand } = await import("execa");
247
+ const args = [...monorepo.packageManager.runCmd, "build"];
248
+ await execaCommand(args.join(" "), {
249
+ cwd: pkg.dir,
250
+ env: { ...process.env, INSIDE_DLER: "true" }
251
+ });
252
+ if (pkg.config.cache) {
253
+ await cachePackageOutput(monorepo, pkg, packageHash);
254
+ }
255
+ } else {
256
+ const { execaCommand } = await import("execa");
257
+ const args = [...monorepo.packageManager.runCmd, "build"];
258
+ await execaCommand(args.join(" "), {
259
+ cwd: pkg.dir,
260
+ env: { ...process.env, INSIDE_DLER: "true" }
261
+ });
262
+ }
263
+ relinka("log", `\u2713 ${pkg.name}: Built`);
264
+ }
@@ -1,5 +1,5 @@
1
1
  export declare const PROJECT_ROOT: string;
2
- export declare const cliVersion = "1.7.152";
2
+ export declare const cliVersion = "1.7.153";
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.152";
4
+ const version = "1.7.153";
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 { z } from "zod";
2
2
  export declare const DatabaseSchema: z.ZodEnum<{
3
3
  none: "none";
4
- mysql: "mysql";
5
4
  sqlite: "sqlite";
5
+ mysql: "mysql";
6
6
  mongodb: "mongodb";
7
7
  postgres: "postgres";
8
8
  }>;
@@ -18,15 +18,15 @@ export declare const BackendSchema: z.ZodEnum<{
18
18
  none: "none";
19
19
  hono: "hono";
20
20
  next: "next";
21
- convex: "convex";
22
21
  express: "express";
23
22
  fastify: "fastify";
24
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<{
28
- bun: "bun";
29
28
  none: "none";
29
+ bun: "bun";
30
30
  node: "node";
31
31
  workers: "workers";
32
32
  }>;
@@ -39,14 +39,14 @@ export declare const FrontendSchema: z.ZodEnum<{
39
39
  next: "next";
40
40
  "react-router": "react-router";
41
41
  "tanstack-router": "tanstack-router";
42
+ "tanstack-start": "tanstack-start";
42
43
  "native-nativewind": "native-nativewind";
43
44
  "native-unistyles": "native-unistyles";
44
- "tanstack-start": "tanstack-start";
45
45
  }>;
46
46
  export type Frontend = z.infer<typeof FrontendSchema>;
47
47
  export declare const AddonsSchema: z.ZodEnum<{
48
- biome: "biome";
49
48
  none: "none";
49
+ biome: "biome";
50
50
  tauri: "tauri";
51
51
  starlight: "starlight";
52
52
  turborepo: "turborepo";
@@ -56,14 +56,14 @@ export declare const AddonsSchema: z.ZodEnum<{
56
56
  export type Addons = z.infer<typeof AddonsSchema>;
57
57
  export declare const ExamplesSchema: z.ZodEnum<{
58
58
  none: "none";
59
- ai: "ai";
60
59
  todo: "todo";
60
+ ai: "ai";
61
61
  }>;
62
62
  export type Examples = z.infer<typeof ExamplesSchema>;
63
63
  export declare const PackageManagerSchema: z.ZodEnum<{
64
- bun: "bun";
65
64
  npm: "npm";
66
65
  pnpm: "pnpm";
66
+ bun: "bun";
67
67
  }>;
68
68
  export type PackageManager = z.infer<typeof PackageManagerSchema>;
69
69
  export declare const DatabaseSetupSchema: z.ZodEnum<{
@@ -1,8 +1,13 @@
1
1
  import type { ReliverseConfig } from "../schema/mod.js";
2
2
  import type { PerfTimer } from "../types/mod.js";
3
+ import type { WorkspacePackage } from "../utils/workspace-utils.js";
3
4
  /**
4
5
  * Main entry point for the rse build and publish process.
5
6
  * Handles building and publishing for both main project and libraries.
6
7
  * @see `src/impl/build/impl.ts` for build main function implementation.
7
8
  */
8
- export declare function dlerPub(timer: PerfTimer, isDev: boolean, config?: ReliverseConfig): Promise<void>;
9
+ export declare function dlerPub(timer: PerfTimer, isDev: boolean, config?: ReliverseConfig, workspacePackages?: WorkspacePackage[] | null, options?: {
10
+ enableCache?: boolean;
11
+ showGraph?: boolean;
12
+ cleanCacheFlag?: boolean;
13
+ }): Promise<void>;
@@ -1,4 +1,6 @@
1
1
  import { bumpHandler, isBumpDisabled, setBumpDisabledValueTo } from "@reliverse/bleump";
2
+ import path from "@reliverse/pathkit";
3
+ import fs from "@reliverse/relifso";
2
4
  import { relinka } from "@reliverse/relinka";
3
5
  import { createMultiStepSpinner } from "@reliverse/rempts";
4
6
  import { dlerBuild } from "../build/impl.js";
@@ -7,8 +9,52 @@ import { regular_pubFlow } from "../build/regular-flow.js";
7
9
  import { getConfigDler } from "../config/load.js";
8
10
  import { finalizeBuild, finalizePub } from "../utils/finalize.js";
9
11
  import { handleDlerError } from "../utils/utils-error-cwd.js";
12
+ import { sortPackagesByDependencies } from "../utils/workspace-utils.js";
13
+ import {
14
+ cleanCache,
15
+ DependencyGraph,
16
+ findMonorepo,
17
+ readMonorepoPackageJson
18
+ } from "../../mod.js";
10
19
  import { createCompletionTexts } from "../utils/finish-text.js";
11
- export async function dlerPub(timer, isDev, config) {
20
+ async function bumpWorkspacePackages(workspacePackages, rootVersion, bumpMode) {
21
+ if (!workspacePackages || workspacePackages.length === 0) {
22
+ return;
23
+ }
24
+ relinka("verbose", `Checking workspace packages for version bumping (root version: ${rootVersion})`);
25
+ for (const pkg of workspacePackages) {
26
+ try {
27
+ const packageJsonContent = await fs.readFile(pkg.packageJsonPath, "utf-8");
28
+ const packageJson = JSON.parse(packageJsonContent);
29
+ if (packageJson.version === rootVersion) {
30
+ relinka("info", `Bumping version for workspace package: ${pkg.name} (${packageJson.version} -> ${getNextVersion(packageJson.version, bumpMode)})`);
31
+ packageJson.version = getNextVersion(packageJson.version, bumpMode);
32
+ await fs.writeFile(pkg.packageJsonPath, JSON.stringify(packageJson, null, 2));
33
+ relinka("success", `Successfully bumped ${pkg.name} to version ${packageJson.version}`);
34
+ } else {
35
+ relinka("verbose", `Skipping ${pkg.name} (version ${packageJson.version} doesn't match root version ${rootVersion})`);
36
+ }
37
+ } catch (error) {
38
+ relinka("warn", `Failed to bump version for ${pkg.name}: ${error}`);
39
+ }
40
+ }
41
+ }
42
+ function getNextVersion(currentVersion, bumpMode) {
43
+ const parts = currentVersion.split(".").map(Number);
44
+ const major = parts[0] || 0;
45
+ const minor = parts[1] || 0;
46
+ const patch = parts[2] || 0;
47
+ switch (bumpMode) {
48
+ case "major":
49
+ return `${major + 1}.0.0`;
50
+ case "minor":
51
+ return `${major}.${minor + 1}.0`;
52
+ case "patch":
53
+ default:
54
+ return `${major}.${minor}.${patch + 1}`;
55
+ }
56
+ }
57
+ export async function dlerPub(timer, isDev, config, workspacePackages, options) {
12
58
  let effectiveConfig = config;
13
59
  let shouldShowSpinner = false;
14
60
  let multiStepSpinner = null;
@@ -16,6 +62,124 @@ export async function dlerPub(timer, isDev, config) {
16
62
  if (!effectiveConfig) {
17
63
  effectiveConfig = await getConfigDler();
18
64
  }
65
+ let monorepo = null;
66
+ let dependencyGraph = null;
67
+ if (options?.enableCache || options?.showGraph || options?.cleanCacheFlag) {
68
+ monorepo = await findMonorepo();
69
+ if (monorepo) {
70
+ relinka("verbose", `Monorepo detected at: ${monorepo.root}`);
71
+ if (options.cleanCacheFlag) {
72
+ await cleanCache(monorepo);
73
+ relinka("log", "\u2713 Cache cleaned");
74
+ }
75
+ const { globby } = await import("globby");
76
+ const packageJsonGlobs = monorepo.packageGlobs.map((glob) => `${glob}/package.json`);
77
+ const matches = await globby(packageJsonGlobs, { cwd: monorepo.root, absolute: true });
78
+ const packages = [];
79
+ for (const packageJsonPath of matches) {
80
+ const pkg = await readMonorepoPackageJson(packageJsonPath);
81
+ if (pkg) {
82
+ packages.push(pkg);
83
+ }
84
+ }
85
+ dependencyGraph = new DependencyGraph(packages);
86
+ if (options.showGraph) {
87
+ dependencyGraph.print();
88
+ }
89
+ } else {
90
+ relinka("warn", "Monorepo features requested but no monorepo detected");
91
+ }
92
+ }
93
+ if (workspacePackages && workspacePackages.length > 0) {
94
+ relinka("info", `Publishing ${workspacePackages.length} workspace package(s)`);
95
+ const sortedPackages = sortPackagesByDependencies(workspacePackages);
96
+ for (const pkg of sortedPackages) {
97
+ relinka("info", `Processing package: ${pkg.name}`);
98
+ const packageConfig = {
99
+ ...effectiveConfig,
100
+ // Override package-specific settings
101
+ projectName: pkg.name,
102
+ projectAuthor: "reliverse",
103
+ projectDescription: "Dler plugin for code migration and modernization codemods",
104
+ projectLicense: "MIT",
105
+ coreEntrySrcDir: path.join(pkg.path, "src"),
106
+ // Assume src dir in package
107
+ coreEntryFile: "mod.ts",
108
+ // Default entry file for workspace packages
109
+ // Override dist directories to be package-specific
110
+ distNpmDirName: path.join("dist-workspace", pkg.name, "npm"),
111
+ distJsrDirName: path.join("dist-workspace", pkg.name, "jsr"),
112
+ libsDirDist: path.join("dist-workspace", pkg.name, "libs"),
113
+ // Ensure it's treated as a library, not CLI
114
+ coreIsCLI: { enabled: false, scripts: {} },
115
+ // Use ESM format for workspace packages
116
+ transpileFormat: "esm",
117
+ transpileTarget: "node",
118
+ // Keep readable for libraries
119
+ transpileMinify: false,
120
+ transpileSourcemap: "none",
121
+ // Use package-specific package.json
122
+ corePackageJsonPath: pkg.packageJsonPath
123
+ };
124
+ await dlerBuild({
125
+ flow: "pub",
126
+ timer,
127
+ isDev,
128
+ config: packageConfig,
129
+ debugOnlyCopyNonBuildFiles: false,
130
+ debugDontCopyNonBuildFiles: false,
131
+ disableOwnSpinner: true,
132
+ enableCache: options?.enableCache,
133
+ showGraph: false,
134
+ // Already shown above if requested
135
+ cleanCacheFlag: false
136
+ // Already cleaned above if requested
137
+ });
138
+ const distPackageJsonPath = path.join(packageConfig.distNpmDirName, "package.json");
139
+ relinka(
140
+ "verbose",
141
+ `Copying package.json from ${pkg.packageJsonPath} to ${distPackageJsonPath}`
142
+ );
143
+ await fs.copy(pkg.packageJsonPath, distPackageJsonPath);
144
+ const packageJsonContent = await fs.readFile(distPackageJsonPath, "utf-8");
145
+ const packageJson = JSON.parse(packageJsonContent);
146
+ packageJson.main = "./bin/mod.js";
147
+ packageJson.types = "./bin/mod.d.ts";
148
+ packageJson.exports = {
149
+ ".": {
150
+ types: "./bin/mod.d.ts",
151
+ default: "./bin/mod.js"
152
+ }
153
+ };
154
+ packageJson.files = ["bin"];
155
+ packageJson.module = "./bin/mod.js";
156
+ packageJson.publishConfig = { access: "public" };
157
+ if (!packageJson.homepage) {
158
+ packageJson.homepage = "https://docs.reliverse.org/cli";
159
+ }
160
+ if (!packageJson.bugs) {
161
+ packageJson.bugs = {
162
+ email: "blefnk@gmail.com",
163
+ url: `https://github.com/reliverse/dler/issues`
164
+ };
165
+ }
166
+ if (!packageJson.devDependencies) {
167
+ packageJson.devDependencies = {};
168
+ }
169
+ await fs.writeFile(distPackageJsonPath, JSON.stringify(packageJson, null, 2));
170
+ relinka("verbose", `Updated package.json paths to point to bin directory`);
171
+ if (!effectiveConfig.commonPubPause) {
172
+ await regular_pubFlow(timer, isDev, packageConfig);
173
+ await library_pubFlow(timer, isDev, packageConfig);
174
+ }
175
+ relinka("success", `Successfully published package: ${pkg.name}`);
176
+ }
177
+ relinka(
178
+ "success",
179
+ `Successfully published all ${workspacePackages.length} workspace package(s)`
180
+ );
181
+ relinka("info", "Publishing main project and libraries...");
182
+ }
19
183
  shouldShowSpinner = effectiveConfig.displayBuildPubLogs === false;
20
184
  const pubSteps = effectiveConfig.commonPubPause ? ["Loading configuration", "Version bumping", "Building project", "Finalizing"] : [
21
185
  "Loading configuration",
@@ -29,6 +193,15 @@ export async function dlerPub(timer, isDev, config) {
29
193
  const bumpIsDisabled = await isBumpDisabled();
30
194
  if (!bumpIsDisabled && !effectiveConfig.commonPubPause) {
31
195
  try {
196
+ if (workspacePackages && workspacePackages.length > 0) {
197
+ const rootPackageJson = await fs.readFile("package.json", "utf-8");
198
+ const rootPackage = JSON.parse(rootPackageJson);
199
+ await bumpWorkspacePackages(
200
+ workspacePackages,
201
+ rootPackage.version,
202
+ effectiveConfig.bumpMode
203
+ );
204
+ }
32
205
  await bumpHandler(
33
206
  effectiveConfig.bumpMode,
34
207
  false,
@@ -41,7 +214,7 @@ export async function dlerPub(timer, isDev, config) {
41
214
  }
42
215
  }
43
216
  if (multiStepSpinner) multiStepSpinner.nextStep();
44
- const { effectiveConfig: buildConfig } = await dlerBuild({
217
+ const buildResult = await dlerBuild({
45
218
  flow: "pub",
46
219
  timer,
47
220
  isDev,
@@ -51,6 +224,7 @@ export async function dlerPub(timer, isDev, config) {
51
224
  disableOwnSpinner: true
52
225
  // disable build's spinner if pub is showing one
53
226
  });
227
+ const buildConfig = buildResult?.effectiveConfig || effectiveConfig;
54
228
  if (multiStepSpinner) multiStepSpinner.nextStep();
55
229
  if (effectiveConfig.commonPubPause) {
56
230
  await finalizeBuild(shouldShowSpinner, timer, effectiveConfig.commonPubPause, "pub");