@simplysf/simply-utam 0.0.0 → 0.1.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.
- package/LICENSE.txt +206 -206
- package/README.md +76 -4
- package/bin/dev.js +20 -0
- package/bin/run.js +20 -0
- package/lib/commands/build.d.ts +21 -0
- package/lib/commands/build.js +85 -0
- package/lib/commands/build.js.map +1 -0
- package/lib/commands/init.d.ts +20 -0
- package/lib/commands/init.js +101 -0
- package/lib/commands/init.js.map +1 -0
- package/lib/commands/overrides.d.ts +18 -0
- package/lib/commands/overrides.js +76 -0
- package/lib/commands/overrides.js.map +1 -0
- package/lib/commands/rewrite.d.ts +19 -0
- package/lib/commands/rewrite.js +85 -0
- package/lib/commands/rewrite.js.map +1 -0
- package/lib/commands/rules.d.ts +19 -0
- package/lib/commands/rules.js +82 -0
- package/lib/commands/rules.js.map +1 -0
- package/lib/commands/steps.d.ts +20 -0
- package/lib/commands/steps.js +89 -0
- package/lib/commands/steps.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +22 -0
- package/lib/index.js.map +1 -0
- package/lib/pipeline-runner.d.ts +31 -0
- package/lib/pipeline-runner.js +241 -0
- package/lib/pipeline-runner.js.map +1 -0
- package/oclif.manifest.json +468 -0
- package/package.json +137 -5
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026, SimplySF.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'node:fs';
|
|
17
|
+
import * as path from 'node:path';
|
|
18
|
+
import { spawn } from 'node:child_process';
|
|
19
|
+
import { discoverProject, generateLwcRules, applyUtamOverrides, rewriteUtamNamespaces, } from '@simplysf/simply-utam-core';
|
|
20
|
+
function defaultSpawn(command, args, cwd) {
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
const isWindows = process.platform === 'win32';
|
|
23
|
+
const proc = spawn(command, args, { cwd, shell: isWindows });
|
|
24
|
+
let stdout = '';
|
|
25
|
+
let stderr = '';
|
|
26
|
+
proc.stdout?.on('data', (chunk) => {
|
|
27
|
+
stdout += chunk.toString();
|
|
28
|
+
});
|
|
29
|
+
proc.stderr?.on('data', (chunk) => {
|
|
30
|
+
stderr += chunk.toString();
|
|
31
|
+
});
|
|
32
|
+
proc.on('close', (code) => {
|
|
33
|
+
resolve({ code: code ?? 0, stdout, stderr });
|
|
34
|
+
});
|
|
35
|
+
proc.on('error', (err) => {
|
|
36
|
+
resolve({ code: 1, stdout, stderr: err.message });
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function resolveBinary(binaryName, projectDir) {
|
|
41
|
+
const localBin = path.join(projectDir, 'node_modules', '.bin', process.platform === 'win32' ? `${binaryName}.cmd` : binaryName);
|
|
42
|
+
if (fs.existsSync(localBin)) {
|
|
43
|
+
return localBin;
|
|
44
|
+
}
|
|
45
|
+
return binaryName;
|
|
46
|
+
}
|
|
47
|
+
function resolveSourceDirs(projectDir, explicitSourceDirs) {
|
|
48
|
+
if (explicitSourceDirs && explicitSourceDirs.length > 0) {
|
|
49
|
+
return explicitSourceDirs.map((d) => path.resolve(projectDir, d));
|
|
50
|
+
}
|
|
51
|
+
const discovery = discoverProject(projectDir);
|
|
52
|
+
if (discovery.packageDirectories.length > 0) {
|
|
53
|
+
return discovery.packageDirectories.map((d) => path.resolve(projectDir, d));
|
|
54
|
+
}
|
|
55
|
+
return [projectDir];
|
|
56
|
+
}
|
|
57
|
+
async function runStageProcess(binaryName, configPath, projectDir, runner) {
|
|
58
|
+
const bin = resolveBinary(binaryName, projectDir);
|
|
59
|
+
const res = await runner(bin, ['-c', configPath], projectDir);
|
|
60
|
+
if (res.code !== 0) {
|
|
61
|
+
const errorMsg = res.stderr || res.stdout || `Process exited with code ${res.code}`;
|
|
62
|
+
return { success: false, error: errorMsg };
|
|
63
|
+
}
|
|
64
|
+
return { success: true };
|
|
65
|
+
}
|
|
66
|
+
function executeRulesStage(projectDir, sourceDirs, dryRun, onStage) {
|
|
67
|
+
onStage?.('rules', 'start');
|
|
68
|
+
try {
|
|
69
|
+
const res = generateLwcRules({ rootDir: projectDir, sourceDirs, dryRun });
|
|
70
|
+
const count = res.filesCreated.length + res.filesUpdated.length;
|
|
71
|
+
onStage?.('rules', 'success', `Generated rules for ${count} components`);
|
|
72
|
+
return { modified: count };
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
const msg = err.message;
|
|
76
|
+
onStage?.('rules', 'error', msg);
|
|
77
|
+
return { modified: 0, error: `Rules generation failed: ${msg}` };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function executeGeneratorStage(projectDir, configRel, dryRun, runner, onStage) {
|
|
81
|
+
const configPath = path.resolve(projectDir, configRel);
|
|
82
|
+
if (!fs.existsSync(configPath)) {
|
|
83
|
+
onStage?.('utam-generate', 'skip', `Config '${configRel}' not found`);
|
|
84
|
+
return { executed: false };
|
|
85
|
+
}
|
|
86
|
+
onStage?.('utam-generate', 'start');
|
|
87
|
+
if (dryRun) {
|
|
88
|
+
onStage?.('utam-generate', 'success', '(dry-run: skipped process execution)');
|
|
89
|
+
return { executed: true };
|
|
90
|
+
}
|
|
91
|
+
const stageRes = await runStageProcess('utam-generate', configPath, projectDir, runner);
|
|
92
|
+
if (!stageRes.success) {
|
|
93
|
+
onStage?.('utam-generate', 'error', stageRes.error);
|
|
94
|
+
return { executed: false, error: `utam-generate failed: ${stageRes.error ?? ''}` };
|
|
95
|
+
}
|
|
96
|
+
onStage?.('utam-generate', 'success');
|
|
97
|
+
return { executed: true };
|
|
98
|
+
}
|
|
99
|
+
function executeOverridesStage(projectDir, sourceDirs, dryRun, onStage) {
|
|
100
|
+
onStage?.('overrides', 'start');
|
|
101
|
+
try {
|
|
102
|
+
const res = applyUtamOverrides({ rootDir: projectDir, sourceDirs, dryRun });
|
|
103
|
+
onStage?.('overrides', 'success', `Applied overrides to ${res.modifiedFilesCount} schemas`);
|
|
104
|
+
return { modified: res.modifiedFilesCount };
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
const msg = err.message;
|
|
108
|
+
onStage?.('overrides', 'error', msg);
|
|
109
|
+
return { modified: 0, error: `Overrides failed: ${msg}` };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function executeRewriteStage(projectDir, sourceDirs, mapPathRel, dryRun, onStage) {
|
|
113
|
+
const mapPath = path.resolve(projectDir, mapPathRel);
|
|
114
|
+
if (!fs.existsSync(mapPath)) {
|
|
115
|
+
onStage?.('rewrite', 'skip', `Namespace map '${mapPathRel}' not found`);
|
|
116
|
+
return { modified: 0 };
|
|
117
|
+
}
|
|
118
|
+
onStage?.('rewrite', 'start');
|
|
119
|
+
try {
|
|
120
|
+
const res = rewriteUtamNamespaces({ rootDir: projectDir, sourceDirs, configFile: mapPath, dryRun });
|
|
121
|
+
if (res.configMissingOrEmpty) {
|
|
122
|
+
onStage?.('rewrite', 'skip', 'Namespace map is empty');
|
|
123
|
+
return { modified: 0 };
|
|
124
|
+
}
|
|
125
|
+
onStage?.('rewrite', 'success', `Rewrote namespaces in ${res.filesModified} schemas`);
|
|
126
|
+
return { modified: res.filesModified };
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
const msg = err.message;
|
|
130
|
+
onStage?.('rewrite', 'error', msg);
|
|
131
|
+
return { modified: 0, error: `Namespace rewrite failed: ${msg}` };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function executeCompilerStage(projectDir, configRel, dryRun, runner, onStage) {
|
|
135
|
+
const configPath = path.resolve(projectDir, configRel);
|
|
136
|
+
if (!fs.existsSync(configPath)) {
|
|
137
|
+
onStage?.('utam', 'skip', `Config '${configRel}' not found`);
|
|
138
|
+
return { executed: false };
|
|
139
|
+
}
|
|
140
|
+
onStage?.('utam', 'start');
|
|
141
|
+
if (dryRun) {
|
|
142
|
+
onStage?.('utam', 'success', '(dry-run: skipped process execution)');
|
|
143
|
+
return { executed: true };
|
|
144
|
+
}
|
|
145
|
+
const stageRes = await runStageProcess('utam', configPath, projectDir, runner);
|
|
146
|
+
if (!stageRes.success) {
|
|
147
|
+
onStage?.('utam', 'error', stageRes.error);
|
|
148
|
+
return { executed: false, error: `utam compiler failed: ${stageRes.error ?? ''}` };
|
|
149
|
+
}
|
|
150
|
+
onStage?.('utam', 'success');
|
|
151
|
+
return { executed: true };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Executes the complete SimplyUTAM compilation build pipeline sequentially:
|
|
155
|
+
* rules -> utam-generate -> overrides -> rewrite -> utam compiler.
|
|
156
|
+
*
|
|
157
|
+
* @param options - Build pipeline execution options.
|
|
158
|
+
* @returns Summary of execution results across all pipeline stages.
|
|
159
|
+
*/
|
|
160
|
+
export async function executeBuildPipeline(options) {
|
|
161
|
+
const projectDir = path.resolve(options?.projectDir ?? process.cwd());
|
|
162
|
+
const dryRun = options?.dryRun ?? false;
|
|
163
|
+
const runner = options?.spawnCommand ?? defaultSpawn;
|
|
164
|
+
const onStage = options?.onStage;
|
|
165
|
+
const sourceDirs = resolveSourceDirs(projectDir, options?.sourceDirs);
|
|
166
|
+
// Stage 1: rules
|
|
167
|
+
const rules = executeRulesStage(projectDir, sourceDirs, dryRun, onStage);
|
|
168
|
+
if (rules.error) {
|
|
169
|
+
return {
|
|
170
|
+
success: false,
|
|
171
|
+
rulesModified: rules.modified,
|
|
172
|
+
overridesApplied: 0,
|
|
173
|
+
namespacesRewritten: 0,
|
|
174
|
+
generatorExecuted: false,
|
|
175
|
+
compilerExecuted: false,
|
|
176
|
+
errors: [rules.error],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// Stage 2: utam-generate
|
|
180
|
+
const gen = await executeGeneratorStage(projectDir, options?.generatorConfigPath ?? 'generator.config.json', dryRun, runner, onStage);
|
|
181
|
+
if (gen.error) {
|
|
182
|
+
return {
|
|
183
|
+
success: false,
|
|
184
|
+
rulesModified: rules.modified,
|
|
185
|
+
overridesApplied: 0,
|
|
186
|
+
namespacesRewritten: 0,
|
|
187
|
+
generatorExecuted: gen.executed,
|
|
188
|
+
compilerExecuted: false,
|
|
189
|
+
errors: [gen.error],
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Stage 3: overrides
|
|
193
|
+
const over = executeOverridesStage(projectDir, sourceDirs, dryRun, onStage);
|
|
194
|
+
if (over.error) {
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
rulesModified: rules.modified,
|
|
198
|
+
overridesApplied: over.modified,
|
|
199
|
+
namespacesRewritten: 0,
|
|
200
|
+
generatorExecuted: gen.executed,
|
|
201
|
+
compilerExecuted: false,
|
|
202
|
+
errors: [over.error],
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// Stage 4: rewrite
|
|
206
|
+
const rew = executeRewriteStage(projectDir, sourceDirs, options?.namespaceMapPath ?? path.join('.utam', 'namespace-map.json'), dryRun, onStage);
|
|
207
|
+
if (rew.error) {
|
|
208
|
+
return {
|
|
209
|
+
success: false,
|
|
210
|
+
rulesModified: rules.modified,
|
|
211
|
+
overridesApplied: over.modified,
|
|
212
|
+
namespacesRewritten: rew.modified,
|
|
213
|
+
generatorExecuted: gen.executed,
|
|
214
|
+
compilerExecuted: false,
|
|
215
|
+
errors: [rew.error],
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// Stage 5: utam compiler
|
|
219
|
+
const comp = await executeCompilerStage(projectDir, options?.utamConfigPath ?? 'utam.config.json', dryRun, runner, onStage);
|
|
220
|
+
if (comp.error) {
|
|
221
|
+
return {
|
|
222
|
+
success: false,
|
|
223
|
+
rulesModified: rules.modified,
|
|
224
|
+
overridesApplied: over.modified,
|
|
225
|
+
namespacesRewritten: rew.modified,
|
|
226
|
+
generatorExecuted: gen.executed,
|
|
227
|
+
compilerExecuted: comp.executed,
|
|
228
|
+
errors: [comp.error],
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
success: true,
|
|
233
|
+
rulesModified: rules.modified,
|
|
234
|
+
overridesApplied: over.modified,
|
|
235
|
+
namespacesRewritten: rew.modified,
|
|
236
|
+
generatorExecuted: gen.executed,
|
|
237
|
+
compilerExecuted: comp.executed,
|
|
238
|
+
errors: [],
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=pipeline-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-runner.js","sourceRoot":"","sources":["../src/pipeline-runner.ts"],"names":[],"mappings":"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"}
|