@clearlydev/nx-archweave 0.1.0 → 0.2.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/README.md +2 -2
- package/dist/eslint/fsd-boundaries.d.ts +27 -10
- package/dist/eslint/fsd-policy.d.ts +38 -0
- package/dist/eslint/index.d.ts +10 -9
- package/dist/eslint/index.js +227 -34
- package/dist/eslint/slice-groups.d.ts +12 -0
- package/dist/generators/add-agent-rules/generator.js +1175 -23
- package/dist/generators/add-backend/generator.js +1127 -75
- package/dist/generators/add-fsd-lite/generator.js +1274 -96
- package/dist/generators/add-integration/generator.js +4 -35
- package/dist/generators/add-review/files/dependabot.yml +7 -0
- package/dist/generators/add-review/generator.js +1100 -46
- package/dist/generators/doctor/generator.js +784 -131
- package/dist/generators/entity/generator.js +251 -32
- package/dist/generators/feature/generator.js +251 -32
- package/dist/generators/init/generator.js +1955 -549
- package/dist/generators/install-integration/generator.js +5 -37
- package/dist/generators/page/generator.js +251 -32
- package/dist/generators/record-integration/generator.js +5 -36
- package/dist/generators/shared/generator.js +251 -32
- package/dist/generators/widget/generator.js +251 -32
- package/dist/index.js +4 -35
- package/package.json +5 -3
- package/src/generators/add-agent-rules/schema.json +5 -0
- package/src/generators/add-fsd-lite/schema.json +2 -2
- package/src/generators/add-integration/schema.json +1 -1
- package/src/generators/entity/schema.json +11 -1
- package/src/generators/feature/schema.json +11 -1
- package/src/generators/init/schema.json +13 -2
- package/src/generators/page/schema.json +15 -3
- package/src/generators/shared/schema.json +7 -1
- package/src/generators/widget/schema.json +11 -1
- package/dist/eslint/fsd-boundaries.js +0 -144
- package/dist/eslint/tsconfig-aliases.js +0 -114
- package/dist/generators/add-agent-rules/render.js +0 -46
- package/dist/generators/add-backend/render.js +0 -102
- package/dist/generators/add-fsd-lite/render.js +0 -72
- package/dist/generators/add-github-templates/render.js +0 -26
- package/dist/generators/add-integration/render.js +0 -34
- package/dist/generators/add-review/render.js +0 -96
- package/dist/generators/allow-builds/render.js +0 -82
- package/dist/generators/doctor/integration-report.js +0 -70
- package/dist/generators/doctor/render.js +0 -10
- package/dist/generators/init/render.js +0 -125
- package/dist/generators/init/validation.js +0 -74
- package/dist/generators/install-integration/render.js +0 -128
- package/dist/generators/record-integration/render.js +0 -31
- package/dist/generators/shared/dry-run.js +0 -12
- package/dist/generators/shared/frontend-app.js +0 -57
- package/dist/generators/shared/project-type.js +0 -39
- package/dist/generators/shared/record-pipeline.js +0 -34
- package/dist/generators/shared/run-nx.js +0 -24
- package/dist/generators/shared/template-files.js +0 -38
- package/dist/generators/shared/toolkit-config-file.js +0 -110
- package/dist/generators/slice/core.js +0 -185
- package/dist/generators/slice/render.js +0 -70
- package/dist/lib/nx-plugin.js +0 -7
- package/dist/runtime/integrations-composition-root.js +0 -20
- package/dist/runtime/node-command-runner.js +0 -81
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { spawnableCommand } from '@nx-archweave/shared';
|
|
3
|
-
// SIGTERM is not guaranteed to actually end a process — a child that traps
|
|
4
|
-
// or ignores it would otherwise keep this runner's promise pending forever,
|
|
5
|
-
// silently defeating the fixed timeout/output-limit guarantees. SIGKILL
|
|
6
|
-
// cannot be caught or ignored, so it is the backstop once a process has had
|
|
7
|
-
// a short grace period to exit cleanly on its own.
|
|
8
|
-
const KILL_GRACE_MS = 500;
|
|
9
|
-
// The one place node:child_process is imported — packages/integrations never
|
|
10
|
-
// imports it directly. Uses spawn (never a shell) so stdout/stderr can be bounded
|
|
11
|
-
// independently at the exact approved limits, and so the child process can be
|
|
12
|
-
// terminated on timeout or overflow without waiting for it to finish producing output.
|
|
13
|
-
export class NodeCommandRunner {
|
|
14
|
-
run(input) {
|
|
15
|
-
return new Promise((resolve, reject) => {
|
|
16
|
-
let stdout = '';
|
|
17
|
-
let stderr = '';
|
|
18
|
-
let timedOut = false;
|
|
19
|
-
let outputExceeded = false;
|
|
20
|
-
let settled = false;
|
|
21
|
-
let killTimer;
|
|
22
|
-
// An npm-installed claude is a .cmd shim on Windows: it runs through cmd.exe with every
|
|
23
|
-
// argument escaped — still never a shell string built from raw input.
|
|
24
|
-
const spawnable = spawnableCommand(input.executable, input.argv);
|
|
25
|
-
const child = spawn(spawnable.command, spawnable.args, {
|
|
26
|
-
cwd: input.cwd,
|
|
27
|
-
shell: false,
|
|
28
|
-
windowsVerbatimArguments: spawnable.windowsVerbatimArguments,
|
|
29
|
-
windowsHide: true,
|
|
30
|
-
// No stdin: nothing here ever answers a prompt (a command that wants
|
|
31
|
-
// confirmation must fail fast instead of waiting on an open pipe).
|
|
32
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
33
|
-
});
|
|
34
|
-
// SIGTERM first (lets a well-behaved process clean up); SIGKILL after a
|
|
35
|
-
// short grace period as a backstop against one that ignores it.
|
|
36
|
-
const terminate = () => {
|
|
37
|
-
child.kill('SIGTERM');
|
|
38
|
-
killTimer = setTimeout(() => {
|
|
39
|
-
child.kill('SIGKILL');
|
|
40
|
-
}, KILL_GRACE_MS);
|
|
41
|
-
};
|
|
42
|
-
const timer = setTimeout(() => {
|
|
43
|
-
timedOut = true;
|
|
44
|
-
terminate();
|
|
45
|
-
}, input.timeoutMs);
|
|
46
|
-
child.stdout.on('data', (chunk) => {
|
|
47
|
-
stdout += chunk.toString('utf8');
|
|
48
|
-
if (Buffer.byteLength(stdout, 'utf8') > input.stdoutLimitBytes) {
|
|
49
|
-
outputExceeded = true;
|
|
50
|
-
terminate();
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
child.stderr.on('data', (chunk) => {
|
|
54
|
-
stderr += chunk.toString('utf8');
|
|
55
|
-
if (Buffer.byteLength(stderr, 'utf8') > input.stderrLimitBytes) {
|
|
56
|
-
outputExceeded = true;
|
|
57
|
-
terminate();
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
// Spawn-level failure (e.g. ENOENT — executable not found) is distinct
|
|
61
|
-
// from a completed process with a non-zero exit code. Only this case
|
|
62
|
-
// rejects the promise.
|
|
63
|
-
child.on('error', (error) => {
|
|
64
|
-
if (settled)
|
|
65
|
-
return;
|
|
66
|
-
settled = true;
|
|
67
|
-
clearTimeout(timer);
|
|
68
|
-
clearTimeout(killTimer);
|
|
69
|
-
reject(error);
|
|
70
|
-
});
|
|
71
|
-
child.on('close', (code) => {
|
|
72
|
-
if (settled)
|
|
73
|
-
return;
|
|
74
|
-
settled = true;
|
|
75
|
-
clearTimeout(timer);
|
|
76
|
-
clearTimeout(killTimer);
|
|
77
|
-
resolve({ stdout, stderr, exitCode: code, timedOut, outputExceeded });
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|