@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.
@@ -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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"}