workspace-manager-cli 1.0.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.
Files changed (50) hide show
  1. package/README.md +339 -0
  2. package/dist/build.d.ts +19 -0
  3. package/dist/build.d.ts.map +1 -0
  4. package/dist/build.js +384 -0
  5. package/dist/build.js.map +1 -0
  6. package/dist/bundler/build-bundler.d.ts +9 -0
  7. package/dist/bundler/build-bundler.d.ts.map +1 -0
  8. package/dist/bundler/build-bundler.js +218 -0
  9. package/dist/bundler/build-bundler.js.map +1 -0
  10. package/dist/bundler/package-merger.d.ts +21 -0
  11. package/dist/bundler/package-merger.d.ts.map +1 -0
  12. package/dist/bundler/package-merger.js +192 -0
  13. package/dist/bundler/package-merger.js.map +1 -0
  14. package/dist/bundler/vite-generator.d.ts +14 -0
  15. package/dist/bundler/vite-generator.d.ts.map +1 -0
  16. package/dist/bundler/vite-generator.js +186 -0
  17. package/dist/bundler/vite-generator.js.map +1 -0
  18. package/dist/config.d.ts +250 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +268 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/copy.d.ts +9 -0
  23. package/dist/copy.d.ts.map +1 -0
  24. package/dist/copy.js +56 -0
  25. package/dist/copy.js.map +1 -0
  26. package/dist/git.d.ts +76 -0
  27. package/dist/git.d.ts.map +1 -0
  28. package/dist/git.js +377 -0
  29. package/dist/git.js.map +1 -0
  30. package/dist/index-update-base.d.ts +2 -0
  31. package/dist/index-update-base.d.ts.map +1 -0
  32. package/dist/index-update-base.js +76 -0
  33. package/dist/index-update-base.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +626 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/lock.d.ts +39 -0
  39. package/dist/lock.d.ts.map +1 -0
  40. package/dist/lock.js +91 -0
  41. package/dist/lock.js.map +1 -0
  42. package/dist/logger.d.ts +42 -0
  43. package/dist/logger.d.ts.map +1 -0
  44. package/dist/logger.js +90 -0
  45. package/dist/logger.js.map +1 -0
  46. package/dist/status.d.ts +23 -0
  47. package/dist/status.d.ts.map +1 -0
  48. package/dist/status.js +158 -0
  49. package/dist/status.js.map +1 -0
  50. package/package.json +47 -0
@@ -0,0 +1,21 @@
1
+ import type { ResolvedConfig } from "../config.js";
2
+ import { Logger } from "../logger.js";
3
+ export interface PackageJson {
4
+ name?: string;
5
+ version?: string;
6
+ description?: string;
7
+ type?: string;
8
+ scripts?: Record<string, string>;
9
+ dependencies?: Record<string, string>;
10
+ devDependencies?: Record<string, string>;
11
+ [key: string]: any;
12
+ }
13
+ /**
14
+ * Merge package.json files from base, core, and custom directories
15
+ */
16
+ export declare function mergePackageJson(config: ResolvedConfig, logger: Logger): Promise<PackageJson>;
17
+ /**
18
+ * Write merged package.json to project root
19
+ */
20
+ export declare function writePackageJson(config: ResolvedConfig, logger: Logger): Promise<string>;
21
+ //# sourceMappingURL=package-merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-merger.d.ts","sourceRoot":"","sources":["../../src/bundler/package-merger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAqMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,192 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { getCorePath, getBasePath } from "../git.js";
4
+ /**
5
+ * Merge package.json files from base, core, and custom directories
6
+ */
7
+ export async function mergePackageJson(config, logger) {
8
+ const packages = [];
9
+ // Collect package.json files based on project type
10
+ switch (config.projectType) {
11
+ case "core-custom":
12
+ await collectCoreCustomPackages(config, packages, logger);
13
+ break;
14
+ case "base-core":
15
+ await collectBaseCorePackages(config, packages, logger);
16
+ break;
17
+ case "base-core-custom":
18
+ await collectBaseCoreCustomPackages(config, packages, logger);
19
+ break;
20
+ }
21
+ // Merge all package.json files (later ones override earlier ones)
22
+ return mergePackages(packages, config, logger);
23
+ }
24
+ /**
25
+ * Collect packages for core-custom type
26
+ */
27
+ async function collectCoreCustomPackages(config, packages, logger) {
28
+ const corePath = getCorePath(config);
29
+ // Core package.json
30
+ const corePackagePath = path.join(corePath, "package.json");
31
+ if (await fs.pathExists(corePackagePath)) {
32
+ const pkg = await fs.readJson(corePackagePath);
33
+ packages.push(pkg);
34
+ logger.debug(`Found core package.json: ${corePackagePath}`);
35
+ }
36
+ // Custom package.json (overrides core)
37
+ if (config.customPath) {
38
+ const customPackagePath = path.join(config.customPath, "package.json");
39
+ if (await fs.pathExists(customPackagePath)) {
40
+ const pkg = await fs.readJson(customPackagePath);
41
+ packages.push(pkg);
42
+ logger.debug(`Found custom package.json: ${customPackagePath}`);
43
+ }
44
+ }
45
+ }
46
+ /**
47
+ * Collect packages for base-core type
48
+ */
49
+ async function collectBaseCorePackages(config, packages, logger) {
50
+ const basePath = getBasePath(config);
51
+ // Base package.json
52
+ if (basePath) {
53
+ const basePackagePath = path.join(basePath, "package.json");
54
+ if (await fs.pathExists(basePackagePath)) {
55
+ const pkg = await fs.readJson(basePackagePath);
56
+ packages.push(pkg);
57
+ logger.debug(`Found base package.json: ${basePackagePath}`);
58
+ }
59
+ }
60
+ // Local core package.json (overrides base)
61
+ if (config.coreLocalPath) {
62
+ const corePackagePath = path.join(config.coreLocalPath, "package.json");
63
+ if (await fs.pathExists(corePackagePath)) {
64
+ const pkg = await fs.readJson(corePackagePath);
65
+ packages.push(pkg);
66
+ logger.debug(`Found core package.json: ${corePackagePath}`);
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Collect packages for base-core-custom type
72
+ */
73
+ async function collectBaseCoreCustomPackages(config, packages, logger) {
74
+ const basePath = getBasePath(config);
75
+ const corePath = getCorePath(config);
76
+ // Layer 1: Base
77
+ if (basePath) {
78
+ const basePackagePath = path.join(basePath, "package.json");
79
+ if (await fs.pathExists(basePackagePath)) {
80
+ const pkg = await fs.readJson(basePackagePath);
81
+ packages.push(pkg);
82
+ logger.debug(`Found base package.json: ${basePackagePath}`);
83
+ }
84
+ }
85
+ // Layer 2: Core
86
+ const corePackagePath = path.join(corePath, "package.json");
87
+ if (await fs.pathExists(corePackagePath)) {
88
+ const pkg = await fs.readJson(corePackagePath);
89
+ packages.push(pkg);
90
+ logger.debug(`Found core package.json: ${corePackagePath}`);
91
+ }
92
+ // Layer 3: Custom
93
+ if (config.customPath) {
94
+ const customPackagePath = path.join(config.customPath, "package.json");
95
+ if (await fs.pathExists(customPackagePath)) {
96
+ const pkg = await fs.readJson(customPackagePath);
97
+ packages.push(pkg);
98
+ logger.debug(`Found custom package.json: ${customPackagePath}`);
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Merge multiple package.json objects
104
+ */
105
+ function mergePackages(packages, config, logger) {
106
+ if (packages.length === 0) {
107
+ logger.warn("No package.json files found to merge");
108
+ return createDefaultPackage(config);
109
+ }
110
+ const merged = {
111
+ name: config.projectRoot.split(path.sep).pop() || "workspace-app",
112
+ version: "1.0.0",
113
+ type: "module",
114
+ scripts: {},
115
+ dependencies: {},
116
+ devDependencies: {},
117
+ };
118
+ // Merge each package in order (later packages override earlier ones)
119
+ for (const pkg of packages) {
120
+ // Merge dependencies
121
+ if (pkg.dependencies) {
122
+ Object.assign(merged.dependencies, pkg.dependencies);
123
+ }
124
+ // Merge devDependencies
125
+ if (pkg.devDependencies) {
126
+ Object.assign(merged.devDependencies, pkg.devDependencies);
127
+ }
128
+ // Merge scripts (later scripts override earlier ones)
129
+ if (pkg.scripts) {
130
+ Object.assign(merged.scripts, pkg.scripts);
131
+ }
132
+ // Copy other top-level fields from last package
133
+ if (pkg.name && packages.indexOf(pkg) === packages.length - 1) {
134
+ merged.description = pkg.description;
135
+ }
136
+ }
137
+ // Add bundler-specific scripts
138
+ merged.scripts = {
139
+ ...merged.scripts,
140
+ "dev": "vite",
141
+ "build": "vite build",
142
+ "preview": "vite preview",
143
+ };
144
+ // Ensure Vite and React plugin are in devDependencies
145
+ if (!merged.devDependencies["vite"]) {
146
+ merged.devDependencies["vite"] = "^5.0.0";
147
+ }
148
+ if (!merged.devDependencies["@vitejs/plugin-react"]) {
149
+ merged.devDependencies["@vitejs/plugin-react"] = "^4.2.0";
150
+ }
151
+ logger.info(`Merged ${packages.length} package.json files`);
152
+ logger.debug(`Total dependencies: ${Object.keys(merged.dependencies).length}`);
153
+ logger.debug(`Total devDependencies: ${Object.keys(merged.devDependencies).length}`);
154
+ return merged;
155
+ }
156
+ /**
157
+ * Create a default package.json if none found
158
+ */
159
+ function createDefaultPackage(config) {
160
+ return {
161
+ name: config.projectRoot.split(path.sep).pop() || "workspace-app",
162
+ version: "1.0.0",
163
+ type: "module",
164
+ scripts: {
165
+ "dev": "vite",
166
+ "build": "vite build",
167
+ "preview": "vite preview",
168
+ },
169
+ dependencies: {
170
+ "react": "^18.2.0",
171
+ "react-dom": "^18.2.0",
172
+ },
173
+ devDependencies: {
174
+ "vite": "^5.0.0",
175
+ "@vitejs/plugin-react": "^4.2.0",
176
+ "typescript": "^5.3.0",
177
+ "@types/react": "^18.2.0",
178
+ "@types/react-dom": "^18.2.0",
179
+ },
180
+ };
181
+ }
182
+ /**
183
+ * Write merged package.json to project root
184
+ */
185
+ export async function writePackageJson(config, logger) {
186
+ const merged = await mergePackageJson(config, logger);
187
+ const packagePath = path.join(config.projectRoot, "package.json");
188
+ await fs.writeJson(packagePath, merged, { spaces: 2 });
189
+ logger.success(`Generated package.json at ${packagePath}`);
190
+ return packagePath;
191
+ }
192
+ //# sourceMappingURL=package-merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-merger.js","sourceRoot":"","sources":["../../src/bundler/package-merger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ResolvedConfig } from "../config.js";
2
+ import { Logger } from "../logger.js";
3
+ export interface ViteAliasConfig {
4
+ [key: string]: string;
5
+ }
6
+ /**
7
+ * Generate Vite configuration with proper module resolution aliases
8
+ */
9
+ export declare function generateViteConfig(config: ResolvedConfig, logger: Logger): Promise<string>;
10
+ /**
11
+ * Write Vite config to project root
12
+ */
13
+ export declare function writeViteConfig(config: ResolvedConfig, logger: Logger): Promise<string>;
14
+ //# sourceMappingURL=vite-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-generator.d.ts","sourceRoot":"","sources":["../../src/bundler/vite-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAqKD;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,186 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { getCorePath, getBasePath } from "../git.js";
4
+ /**
5
+ * Generate Vite configuration with proper module resolution aliases
6
+ */
7
+ export async function generateViteConfig(config, logger) {
8
+ const aliases = {};
9
+ // Build alias map based on project type
10
+ switch (config.projectType) {
11
+ case "core-custom":
12
+ await buildCoreCustomAliases(config, aliases, logger);
13
+ break;
14
+ case "base-core":
15
+ await buildBaseCoreAliases(config, aliases, logger);
16
+ break;
17
+ case "base-core-custom":
18
+ await buildBaseCoreCustomAliases(config, aliases, logger);
19
+ break;
20
+ }
21
+ // Generate Vite config file content
22
+ const configContent = `import { defineConfig } from 'vite'
23
+ import react from '@vitejs/plugin-react'
24
+ import path from 'path'
25
+
26
+ // Auto-generated by workspace-cli in bundler mode
27
+ // Edit workspace.config.json to regenerate
28
+
29
+ export default defineConfig({
30
+ plugins: [react()],
31
+ resolve: {
32
+ alias: ${JSON.stringify(aliases, null, 6).replace(/"([^"]+)":/g, "'$1':")}
33
+ },
34
+ server: {
35
+ port: 3000,
36
+ open: true
37
+ },
38
+ build: {
39
+ outDir: 'dist',
40
+ sourcemap: true
41
+ }
42
+ })
43
+ `;
44
+ return configContent;
45
+ }
46
+ /**
47
+ * Build aliases for core-custom type
48
+ */
49
+ async function buildCoreCustomAliases(config, aliases, logger) {
50
+ const corePath = getCorePath(config);
51
+ // Determine core source path (with fallback logic)
52
+ let coreSrcPath;
53
+ if (config.coreSrcPath) {
54
+ coreSrcPath = config.coreSrcPath;
55
+ }
56
+ else {
57
+ coreSrcPath = path.join(corePath, "src", "core");
58
+ // Check for nested structure
59
+ if (!(await fs.pathExists(coreSrcPath)) && config.core?.name) {
60
+ const altNestedSrc = path.join(corePath, config.core.name, "src", "core");
61
+ const altRoot = path.join(corePath, config.core.name);
62
+ if (await fs.pathExists(altNestedSrc)) {
63
+ coreSrcPath = altNestedSrc;
64
+ }
65
+ else if (await fs.pathExists(altRoot)) {
66
+ coreSrcPath = altRoot;
67
+ }
68
+ }
69
+ }
70
+ // Core aliases (absolute paths for Vite)
71
+ aliases['@core'] = coreSrcPath;
72
+ aliases['core'] = coreSrcPath;
73
+ // Common core subdirectories
74
+ const coreSubdirs = ['components', 'etsApis', 'layouts', 'store', 'shared', 'server'];
75
+ for (const subdir of coreSubdirs) {
76
+ const subdirPath = path.join(coreSrcPath, subdir);
77
+ if (await fs.pathExists(subdirPath)) {
78
+ aliases[`core/${subdir}`] = subdirPath;
79
+ }
80
+ }
81
+ // Custom overlay (highest priority)
82
+ if (config.customPath && await fs.pathExists(config.customPath)) {
83
+ aliases['@custom'] = config.customPath;
84
+ aliases['custom'] = config.customPath;
85
+ }
86
+ logger.debug(`Generated ${Object.keys(aliases).length} Vite aliases for core-custom`);
87
+ }
88
+ /**
89
+ * Build aliases for base-core type
90
+ */
91
+ async function buildBaseCoreAliases(config, aliases, logger) {
92
+ const basePath = getBasePath(config);
93
+ if (!basePath) {
94
+ throw new Error("Base path not configured for base-core type");
95
+ }
96
+ // Base aliases
97
+ aliases['@base'] = basePath;
98
+ // Detect common base subdirectories
99
+ const baseSubdirs = ['components', 'utils', 'hooks', 'types', 'store', 'resources'];
100
+ for (const subdir of baseSubdirs) {
101
+ const subdirPath = path.join(basePath, subdir);
102
+ if (await fs.pathExists(subdirPath)) {
103
+ aliases[subdir] = subdirPath;
104
+ }
105
+ }
106
+ // Look for main entry point
107
+ const mainPath = path.join(basePath, 'main.ts');
108
+ const mainIndexPath = path.join(basePath, 'main', 'index.ts');
109
+ if (await fs.pathExists(mainPath)) {
110
+ aliases['main'] = mainPath;
111
+ }
112
+ else if (await fs.pathExists(mainIndexPath)) {
113
+ aliases['main'] = path.join(basePath, 'main');
114
+ }
115
+ // Local core overlays base (higher priority)
116
+ if (config.coreLocalPath && await fs.pathExists(config.coreLocalPath)) {
117
+ aliases['@core'] = config.coreLocalPath;
118
+ aliases['core'] = config.coreLocalPath;
119
+ }
120
+ logger.debug(`Generated ${Object.keys(aliases).length} Vite aliases for base-core`);
121
+ }
122
+ /**
123
+ * Build aliases for base-core-custom type
124
+ */
125
+ async function buildBaseCoreCustomAliases(config, aliases, logger) {
126
+ const basePath = getBasePath(config);
127
+ const corePath = getCorePath(config);
128
+ if (!basePath) {
129
+ throw new Error("Base path not configured for base-core-custom type");
130
+ }
131
+ // Layer 1: Base (lowest priority)
132
+ aliases['@base'] = basePath;
133
+ const baseSubdirs = ['components', 'utils', 'hooks', 'types', 'store', 'resources'];
134
+ for (const subdir of baseSubdirs) {
135
+ const subdirPath = path.join(basePath, subdir);
136
+ if (await fs.pathExists(subdirPath)) {
137
+ aliases[subdir] = subdirPath;
138
+ }
139
+ }
140
+ // Layer 2: Core (overrides base)
141
+ let coreSrcPath;
142
+ if (config.coreSrcPath) {
143
+ coreSrcPath = config.coreSrcPath;
144
+ }
145
+ else {
146
+ coreSrcPath = path.join(corePath, "src", "core");
147
+ if (!(await fs.pathExists(coreSrcPath)) && config.core?.name) {
148
+ const altNestedSrc = path.join(corePath, config.core.name, "src", "core");
149
+ const altRoot = path.join(corePath, config.core.name);
150
+ if (await fs.pathExists(altNestedSrc)) {
151
+ coreSrcPath = altNestedSrc;
152
+ }
153
+ else if (await fs.pathExists(altRoot)) {
154
+ coreSrcPath = altRoot;
155
+ }
156
+ }
157
+ }
158
+ aliases['@core'] = coreSrcPath;
159
+ aliases['core'] = coreSrcPath;
160
+ // Core subdirectories can override base
161
+ const coreSubdirs = ['components', 'etsApis', 'layouts', 'store', 'shared', 'server'];
162
+ for (const subdir of coreSubdirs) {
163
+ const subdirPath = path.join(coreSrcPath, subdir);
164
+ if (await fs.pathExists(subdirPath)) {
165
+ // Override base aliases if they exist
166
+ aliases[`core/${subdir}`] = subdirPath;
167
+ }
168
+ }
169
+ // Layer 3: Custom (highest priority - overrides everything)
170
+ if (config.customPath && await fs.pathExists(config.customPath)) {
171
+ aliases['@custom'] = config.customPath;
172
+ aliases['custom'] = config.customPath;
173
+ }
174
+ logger.debug(`Generated ${Object.keys(aliases).length} Vite aliases for base-core-custom`);
175
+ }
176
+ /**
177
+ * Write Vite config to project root
178
+ */
179
+ export async function writeViteConfig(config, logger) {
180
+ const viteConfigPath = path.join(config.projectRoot, "vite.config.ts");
181
+ const configContent = await generateViteConfig(config, logger);
182
+ await fs.writeFile(viteConfigPath, configContent, "utf-8");
183
+ logger.success(`Generated Vite config at ${viteConfigPath}`);
184
+ return viteConfigPath;
185
+ }
186
+ //# sourceMappingURL=vite-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-generator.js","sourceRoot":"","sources":["../../src/bundler/vite-generator.ts"],"names":[],"mappings":"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"}