pwa-sv 1.1.1

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.
@@ -0,0 +1,119 @@
1
+ import { execa } from 'execa';
2
+ import { Either } from 'effect';
3
+ // Core dependencies that are always installed (as per technical specifications)
4
+ const CORE_DEPENDENCIES = [
5
+ '@vite-pwa/sveltekit', // PWA plugin for Vite
6
+ '@lucide/svelte', // Icon library
7
+ 'effect', // Functional programming library
8
+ '@effect/platform', // Effect platform utilities
9
+ '@fontsource-variable/roboto' // Variable version of roboto font
10
+ ];
11
+ // Conditional dependencies based on flags
12
+ const CONDITIONAL_DEPENDENCIES = {
13
+ dexie: ['dexie'],
14
+ skeleton: ['@skeletonlabs/skeleton', '@skeletonlabs/skeleton-svelte'],
15
+ i18n: ['svelte-i18n']
16
+ };
17
+ /**
18
+ * Creates the complete list of dependencies based on configuration
19
+ * @param config Configuration object containing dependency preferences
20
+ * @returns Array of dependency strings to install
21
+ */
22
+ const buildDependencyList = (config) => {
23
+ // Start with core dependencies
24
+ let dependenciesToInstall = [...CORE_DEPENDENCIES];
25
+ // Add conditional dependencies based on configuration
26
+ if (config.useDexie) {
27
+ const dexieDeps = CONDITIONAL_DEPENDENCIES.dexie;
28
+ if (dexieDeps) {
29
+ dependenciesToInstall = [...dependenciesToInstall, ...dexieDeps];
30
+ }
31
+ console.log('Including Dexie IndexedDB wrapper');
32
+ }
33
+ if (config.useSkeleton) {
34
+ const skeletonDeps = CONDITIONAL_DEPENDENCIES.skeleton;
35
+ if (skeletonDeps) {
36
+ dependenciesToInstall = [...dependenciesToInstall, ...skeletonDeps];
37
+ }
38
+ console.log('Including Skeleton UI framework');
39
+ }
40
+ if (config.useI18n) {
41
+ const i18nDeps = CONDITIONAL_DEPENDENCIES.i18n;
42
+ if (i18nDeps) {
43
+ dependenciesToInstall = [...dependenciesToInstall, ...i18nDeps];
44
+ }
45
+ console.log('Including internationalization support');
46
+ }
47
+ return dependenciesToInstall;
48
+ };
49
+ /**
50
+ * Creates the complete list of dependencies based on configuration
51
+ * @param config Configuration object containing dependency preferences
52
+ * @returns Array of dependency strings to install
53
+ */
54
+ export { buildDependencyList };
55
+ /**
56
+ * Determines if dependencies should be installed as dev dependencies based on the package name
57
+ * Following the technical specifications to properly categorize dependencies
58
+ * @param deps Array of dependency strings
59
+ * @returns Object with devDeps and runtimeDeps arrays
60
+ */
61
+ export const categorizeDependencies = (deps) => {
62
+ const devDeps = [];
63
+ const runtimeDeps = [];
64
+ deps.forEach(dep => {
65
+ // Dev dependencies according to typical usage and architecture
66
+ if (dep.includes('vite') || // Vite and related tools are dev dependencies
67
+ dep.includes('sveltekit') || // SvelteKit build tools are dev dependencies
68
+ dep.includes('@sveltejs/') || // Svelte.js official packages are dev dependencies
69
+ dep.includes('svelte-') || // Svelte-specific dev tools are dev dependencies
70
+ dep.includes('skeleton') || // UI framework dev dependencies
71
+ dep.includes('i18n') // i18n tools are typically dev dependencies
72
+ ) {
73
+ devDeps.push(dep);
74
+ }
75
+ else {
76
+ // Runtime dependencies
77
+ runtimeDeps.push(dep);
78
+ }
79
+ });
80
+ return { devDeps, runtimeDeps };
81
+ };
82
+ /**
83
+ * Installs dependencies based on the provided configuration using functional error handling
84
+ * @param config Configuration object containing dependency preferences
85
+ */
86
+ export const installDependencies = async (config) => {
87
+ console.log('Installing dependencies...');
88
+ const dependenciesToInstall = buildDependencyList(config);
89
+ // Install all dependencies using pnpm
90
+ try {
91
+ const projectDir = config.projectName;
92
+ console.log(`Installing dependencies in ${projectDir}:`, dependenciesToInstall);
93
+ // Categorize dependencies into dev and runtime dependencies
94
+ const { devDeps, runtimeDeps } = categorizeDependencies(dependenciesToInstall);
95
+ // Install runtime dependencies first
96
+ if (runtimeDeps.length > 0) {
97
+ console.log(`Installing runtime dependencies:`, runtimeDeps);
98
+ await execa('pnpm', ['add', ...runtimeDeps], {
99
+ cwd: projectDir,
100
+ stdio: 'inherit'
101
+ });
102
+ }
103
+ // Install dev dependencies
104
+ if (devDeps.length > 0) {
105
+ console.log(`Installing dev dependencies:`, devDeps);
106
+ await execa('pnpm', ['add', '-D', ...devDeps], {
107
+ cwd: projectDir,
108
+ stdio: 'inherit'
109
+ });
110
+ }
111
+ console.log('Dependencies installed successfully');
112
+ return Either.right(undefined);
113
+ }
114
+ catch (error) {
115
+ console.error('Failed to install dependencies:', error);
116
+ return Either.left(new Error(`Dependency installation failed: ${error.message}`));
117
+ }
118
+ };
119
+ //# sourceMappingURL=deps-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps-manager.js","sourceRoot":"","sources":["../src/deps-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gFAAgF;AAChF,MAAM,iBAAiB,GAAG;IACxB,qBAAqB,EAAS,sBAAsB;IACpD,gBAAgB,EAAc,eAAe;IAC7C,QAAQ,EAAsB,iCAAiC;IAC/D,kBAAkB,EAAY,4BAA4B;IAC1D,6BAA6B,CAAC,kCAAkC;CACjE,CAAC;AAEF,0CAA0C;AAC1C,MAAM,wBAAwB,GAAgC;IAC5D,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,wBAAwB,EAAE,+BAA+B,CAAC;IACrE,IAAI,EAAE,CAAC,aAAa,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAY,EAAE;IACxD,+BAA+B;IAC/B,IAAI,qBAAqB,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAEnD,sDAAsD;IACtD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,qBAAqB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,SAAS,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,qBAAqB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,YAAY,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,qBAAqB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAgD,EAAE;IACrG,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,+DAA+D;QAC/D,IACE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAc,8CAA8C;YAChF,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAS,6CAA6C;YAC/E,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAQ,mDAAmD;YACrF,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAW,iDAAiD;YACnF,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAU,gCAAgC;YAClE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc,4CAA4C;UAC9E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAe,EAAuC,EAAE;IAChG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE1D,sCAAsC;IACtC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAEhF,4DAA4D;QAC5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;QAE/E,qCAAqC;QACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE;gBAC3C,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE;gBAC7C,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgChC;;GAEG;AACH,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,GAAI,QAAQ,OAAO,KAAG,aAY5C,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,eAAe,GAAU,OAAO,aAAa,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA6DvF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkHnG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAOjE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
package/dist/engine.js ADDED
@@ -0,0 +1,229 @@
1
+ import { installDependencies } from './deps-manager.js';
2
+ import { createSvelteProject, createPWAConfig, updatePackageJsonWithPWAScripts, validateProjectStructure, createSkeletonUIConfig, createI18nConfig, createPWAAssetConfig, createAgentsFileAndDocsFolder } from './process-fs-handler.js';
3
+ import { Either } from 'effect';
4
+ // Import chalk for color formatting
5
+ import chalk from 'chalk';
6
+ /**
7
+ * Formats step messages with color for better readability
8
+ * @param message The message to format
9
+ * @returns Formatted message with color
10
+ */
11
+ const formatStepMessage = (message) => {
12
+ return chalk.cyan(message);
13
+ };
14
+ /**
15
+ * Formats success messages with color
16
+ * @param message The message to format
17
+ * @returns Formatted message with color
18
+ */
19
+ const formatSuccessMessage = (message) => {
20
+ return chalk.green(message);
21
+ };
22
+ /**
23
+ * Formats error messages with color
24
+ * @param message The message to format
25
+ * @returns Formatted message with color
26
+ */
27
+ const formatErrorMessage = (message) => {
28
+ return chalk.red(message);
29
+ };
30
+ /**
31
+ * Creates an initial pipeline state
32
+ * @param config Configuration object
33
+ * @returns Initial pipeline state
34
+ */
35
+ const createInitialState = (config) => ({
36
+ projectName: config.projectName,
37
+ projectCreated: false,
38
+ dependenciesInstalled: false,
39
+ pwaConfigCreated: false,
40
+ pwaAssetConfigCreated: false,
41
+ packageJsonUpdated: false,
42
+ structureValidated: false,
43
+ skeletonConfigCreated: false,
44
+ i18nConfigCreated: false,
45
+ agentsFileCreated: false,
46
+ rollbackPerformed: false,
47
+ });
48
+ /**
49
+ * Performs cleanup/rollback operations when something fails in the pipeline
50
+ * @param state Current pipeline state
51
+ * @returns Result of the rollback operation
52
+ */
53
+ const performRollback = async (state) => {
54
+ console.log(`Performing rollback for project: ${state.projectName}`);
55
+ try {
56
+ // If i18n configuration was created but something failed after that,
57
+ // we might need to handle any state changes made during i18n configuration
58
+ if (state.i18nConfigCreated) {
59
+ console.log('Rolling back internationalization configuration...');
60
+ // In a more sophisticated implementation, we would remove the generated files
61
+ // For now, we'll just log the rollback
62
+ }
63
+ // If skeleton configuration was created but something failed after that,
64
+ // we might need to handle any state changes made during skeleton configuration
65
+ if (state.skeletonConfigCreated) {
66
+ console.log('Rolling back Skeleton UI configuration...');
67
+ // In a more sophisticated implementation, we would remove the generated files
68
+ // For now, we'll just log the rollback
69
+ }
70
+ // If structure validation was performed but something failed after that,
71
+ // we might need to handle any state changes made during validation
72
+ if (state.structureValidated) {
73
+ console.log('Rolling back after structure validation...');
74
+ // In this case, validation passed but something else failed later
75
+ // For now, we'll just log the rollback
76
+ }
77
+ // If package.json was updated but something failed after that,
78
+ // we might want to restore the original as part of the rollback
79
+ if (state.packageJsonUpdated) {
80
+ console.log('Rolling back package.json changes...');
81
+ // In a more sophisticated implementation, we would restore the original package.json
82
+ // For now, we'll just log the rollback
83
+ }
84
+ // If PWA asset config was created but something failed after that,
85
+ // we might want to delete it as part of the rollback
86
+ if (state.pwaAssetConfigCreated) {
87
+ console.log('Rolling back PWA asset configuration file...');
88
+ // In a more sophisticated implementation, we would remove the generated file
89
+ // For now, we'll just log the rollback
90
+ }
91
+ // If PWA config was created but something failed after that,
92
+ // we might want to delete it as part of the rollback
93
+ if (state.pwaConfigCreated) {
94
+ console.log('Rolling back PWA configuration file...');
95
+ // In a more sophisticated implementation, we would remove the generated file
96
+ // For now, we'll just log the rollback
97
+ }
98
+ // If dependencies were installed but something failed after that,
99
+ // we might want to implement more sophisticated cleanup here if needed
100
+ // For now, we'll just log the rollback
101
+ console.log(`Rollback completed for project: ${state.projectName}`);
102
+ state.rollbackPerformed = true;
103
+ return Either.right(undefined);
104
+ }
105
+ catch (error) {
106
+ return Either.left(new Error(`Rollback failed: ${error.message}`));
107
+ }
108
+ };
109
+ /**
110
+ * Main automation pipeline that coordinates the entire project creation process
111
+ * with transactional integrity and error handling
112
+ * @param config Configuration object containing all necessary parameters
113
+ */
114
+ export const executeAutomationPipeline = async (config) => {
115
+ console.log(formatStepMessage(`Creating SvelteKit PWA project: ${config.projectName}`));
116
+ // Initialize state for this pipeline run
117
+ const state = createInitialState(config);
118
+ try {
119
+ // Step 1: Create the base SvelteKit project
120
+ console.log(formatStepMessage('Step 1: Creating base SvelteKit project...'));
121
+ const projectResult = await createSvelteProject(config);
122
+ if (Either.isLeft(projectResult)) {
123
+ console.log(formatErrorMessage('Step 1 failed, performing rollback...'));
124
+ await performRollback(state);
125
+ return projectResult;
126
+ }
127
+ state.projectCreated = true;
128
+ // Step 2: Install dependencies based on configuration
129
+ console.log(formatStepMessage('Step 2: Installing dependencies...'));
130
+ const depsResult = await installDependencies(config);
131
+ if (Either.isLeft(depsResult)) {
132
+ console.log(formatErrorMessage('Step 2 failed, performing rollback...'));
133
+ await performRollback(state);
134
+ return depsResult;
135
+ }
136
+ state.dependenciesInstalled = true;
137
+ // Step 3: Create PWA configuration
138
+ console.log(formatStepMessage('Step 3: Creating PWA configuration...'));
139
+ const pwaConfigResult = await createPWAConfig(config.projectName);
140
+ if (Either.isLeft(pwaConfigResult)) {
141
+ console.log(formatErrorMessage('Step 3 failed, performing rollback...'));
142
+ await performRollback(state);
143
+ return pwaConfigResult;
144
+ }
145
+ state.pwaConfigCreated = true;
146
+ // Step 4: Create Skeleton UI configuration if requested
147
+ if (config.useSkeleton) {
148
+ console.log(formatStepMessage('Step 4: Creating Skeleton UI configuration...'));
149
+ const skeletonConfigResult = await createSkeletonUIConfig(config.projectName);
150
+ if (Either.isLeft(skeletonConfigResult)) {
151
+ console.log(formatErrorMessage('Step 4 failed, performing rollback...'));
152
+ await performRollback(state);
153
+ return skeletonConfigResult;
154
+ }
155
+ state.skeletonConfigCreated = true;
156
+ }
157
+ // Step 5: Create Internationalization configuration if requested
158
+ if (config.useI18n) {
159
+ console.log(formatStepMessage('Step 5: Creating internationalization configuration...'));
160
+ const i18nConfigResult = await createI18nConfig(config.projectName);
161
+ if (Either.isLeft(i18nConfigResult)) {
162
+ console.log(formatErrorMessage('Step 5 failed, performing rollback...'));
163
+ await performRollback(state);
164
+ return i18nConfigResult;
165
+ }
166
+ state.i18nConfigCreated = true;
167
+ }
168
+ // Step 6: Create pwa-asset-generator configuration for Android and web only
169
+ console.log(formatStepMessage('Step 6: Creating pwa-asset-generator configuration...'));
170
+ const pwaAssetConfigResult = await createPWAAssetConfig(config.projectName);
171
+ if (Either.isLeft(pwaAssetConfigResult)) {
172
+ console.log(formatErrorMessage('Step 6 failed, performing rollback...'));
173
+ await performRollback(state);
174
+ return pwaAssetConfigResult;
175
+ }
176
+ state.pwaAssetConfigCreated = true;
177
+ // Step 7: Update package.json with PWA scripts
178
+ console.log(formatStepMessage('Step 7: Updating package.json with PWA scripts...'));
179
+ const packageJsonResult = await updatePackageJsonWithPWAScripts(config.projectName);
180
+ if (Either.isLeft(packageJsonResult)) {
181
+ console.log(formatErrorMessage('Step 7 failed, performing rollback...'));
182
+ await performRollback(state);
183
+ return packageJsonResult;
184
+ }
185
+ state.packageJsonUpdated = true;
186
+ // Step 8: Create AGENTS.md file and docs folder
187
+ console.log(formatStepMessage('Step 8: Creating AGENTS.md file and docs folder...'));
188
+ const agentsResult = await createAgentsFileAndDocsFolder(config.projectName);
189
+ if (Either.isLeft(agentsResult)) {
190
+ console.log(formatErrorMessage('Step 8 failed, performing rollback...'));
191
+ await performRollback(state);
192
+ return agentsResult;
193
+ }
194
+ state.agentsFileCreated = true;
195
+ // Step 9: Validate project structure
196
+ console.log(formatStepMessage('Step 9: Validating project structure...'));
197
+ const validationResult = await validateProjectStructure(config.projectName);
198
+ if (Either.isLeft(validationResult)) {
199
+ console.log(formatErrorMessage('Step 9 failed, performing rollback...'));
200
+ await performRollback(state);
201
+ return validationResult;
202
+ }
203
+ state.structureValidated = true;
204
+ console.log(formatSuccessMessage(`Project ${config.projectName} created successfully!`));
205
+ console.log(formatStepMessage('To enhance your development experience, run: npx bmad-method install'));
206
+ return Either.right(undefined);
207
+ }
208
+ catch (error) {
209
+ console.error('Pipeline execution failed:', error);
210
+ // Perform rollback if needed
211
+ if (!state.rollbackPerformed) {
212
+ await performRollback(state);
213
+ }
214
+ return Either.left(new Error(`Pipeline execution failed: ${error.message}`));
215
+ }
216
+ };
217
+ /**
218
+ * Creates a new project based on the provided configuration
219
+ * @param config Configuration object for the project
220
+ */
221
+ export const createProject = async (config) => {
222
+ const result = await executeAutomationPipeline(config);
223
+ if (Either.isLeft(result)) {
224
+ console.error('Project creation failed:', result.left);
225
+ throw result.left;
226
+ }
227
+ };
228
+ export { createInitialState, performRollback };
229
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACzO,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,oCAAoC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAU,EAAE;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAU,EAAE;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC;AAmBF;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAe,EAAiB,EAAE,CAAC,CAAC;IAC9D,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,KAAK;IACrB,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,KAAK;IACzB,qBAAqB,EAAE,KAAK;IAC5B,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;CACzB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,eAAe,GAAG,KAAK,EAAE,KAAoB,EAAuC,EAAE;IAC1F,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,8EAA8E;YAC9E,uCAAuC;QACzC,CAAC;QAED,yEAAyE;QACzE,+EAA+E;QAC/E,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,8EAA8E;YAC9E,uCAAuC;QACzC,CAAC;QAED,yEAAyE;QACzE,mEAAmE;QACnE,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,kEAAkE;YAClE,uCAAuC;QACzC,CAAC;QAED,+DAA+D;QAC/D,gEAAgE;QAChE,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,qFAAqF;YACrF,uCAAuC;QACzC,CAAC;QAED,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,6EAA6E;YAC7E,uCAAuC;QACzC,CAAC;QAED,6DAA6D;QAC7D,qDAAqD;QACrD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,6EAA6E;YAC7E,uCAAuC;QACzC,CAAC;QAED,kEAAkE;QAClE,uEAAuE;QACvE,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,MAAe,EAAuC,EAAE;IACtG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,mCAAmC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAExF,yCAAyC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAE5B,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAEnC,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE9B,wDAAwD;QACxD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAChF,MAAM,oBAAoB,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,oBAAoB,CAAC;YAC9B,CAAC;YACD,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,iEAAiE;QACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,wDAAwD,CAAC,CAAC,CAAC;YACzF,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,gBAAgB,CAAC;YAC1B,CAAC;YACD,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,4EAA4E;QAC5E,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACxF,MAAM,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAEnC,+CAA+C;QAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,mDAAmD,CAAC,CAAC,CAAC;QACpF,MAAM,iBAAiB,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEhC,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,oDAAoD,CAAC,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE/B,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEhC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,WAAW,MAAM,CAAC,WAAW,wBAAwB,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,sEAAsE,CAAC,CAAC,CAAC;QACvG,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAEnD,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,MAAe,EAAiB,EAAE;IACpE,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAiB,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-fs-handler.d.ts","sourceRoot":"","sources":["../src/process-fs-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAwE7F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,aAAa,MAAM,EAAE,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAU1H,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAU,aAAa,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAS1G,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAyI7F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA2C7G,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkClG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAoCtG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkJpG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CA4K9F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAoT3G,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAkO7F,CAAC"}