fg-devkit 1.22.0 → 1.24.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 +30 -7
- package/configs/dependency-policy.vue-workspace.json +28 -28
- package/package.json +12 -85
- package/scaffold/vue/package.json +13 -13
- package/scripts/audit-override-commit.mjs +167 -24
- package/scripts/bump-node-toolchain.mjs +8 -31
- package/scripts/bump-pnpm-toolchain.mjs +8 -29
- package/scripts/check-dependency-policy.mjs +10 -35
- package/scripts/fg-devkit.mjs +290 -337
- package/scripts/fleet-bump-fg-devkit.mjs +4 -5
- package/scripts/fleet-git-commit-push-scoped.mjs +6 -26
- package/scripts/fleet-git-discard-scoped.mjs +5 -25
- package/scripts/fleet-git-pull-scoped.mjs +5 -25
- package/scripts/fleet-vulns.mjs +4 -9
- package/scripts/generate-release-notes.mjs +1 -1
- package/scripts/{audit-fix-plan.mjs → lib/audit-fix-plan.mjs} +77 -4
- package/scripts/{audit-fix-plan.test.mjs → lib/audit-fix-plan.test.mjs} +50 -2
- package/scripts/lib/common.mjs +95 -0
- package/scripts/{dependency-policy-toolchain.mjs → lib/dependency-policy-toolchain.mjs} +3 -35
- package/scripts/{git-commit-push-fleet-common.mjs → lib/git-commit-push-fleet-common.mjs} +1 -1
- package/scripts/{git-discard-fleet-common.mjs → lib/git-discard-fleet-common.mjs} +1 -1
- package/scripts/{git-pull-fleet-common.mjs → lib/git-pull-fleet-common.mjs} +1 -1
- package/scripts/{override-changes.mjs → lib/override-changes.mjs} +20 -0
- package/scripts/{piwik-dimensions.test.mjs → lib/piwik-dimensions.test.mjs} +0 -5
- package/scripts/{release-notes-common.mjs → lib/release-notes-common.mjs} +5 -7
- package/scripts/{resolve-dependency-policy-path.mjs → lib/resolve-dependency-policy-path.mjs} +4 -3
- package/scripts/piwik.mjs +6 -6
- package/scripts/poeditor-download.mjs +1 -1
- package/scripts/poeditor-upload.mjs +1 -1
- package/scripts/policy-outdated.mjs +3 -8
- package/scripts/policy-upgrade-commit.mjs +5 -26
- package/scripts/policy-upgrade.mjs +6 -30
- package/scripts/policy-vulns.mjs +3 -8
- package/scripts/prune-overrides.mjs +5 -16
- package/scripts/prune-release-age-exclude.mjs +1 -1
- package/scripts/refresh-dependency-policy-from-repos.mjs +5 -7
- package/scripts/release.sh +2 -1
- package/scripts/scaffold-vue.mjs +1 -3
- package/scripts/setup-ai-rules.mjs +135 -0
- package/scripts/sync-consumer-lefthook.mjs +7 -24
- package/scripts/sync-dependency-check-suppressions-commit.mjs +7 -46
- package/scripts/sync-dependency-policy-commit.mjs +6 -38
- package/scripts/sync-dependency-policy.mjs +9 -35
- package/scripts/sync-node-toolchain.mjs +5 -8
- package/scripts/sync-pnpm-toolchain.mjs +5 -8
- package/scripts/sync-scaffold-vue-deps.mjs +6 -7
- package/scripts/sync-tooling-configs.mjs +8 -23
- package/scripts/sync-vite-plugin-vue-inspector.mjs +7 -39
- package/scripts/verify-release-notes.mjs +1 -1
- package/.cursor/rules/core-coding-standards.mdc +0 -291
- package/scaffold/vue/.gitignore +0 -13
- package/scripts/cz/.cz-config.cjs +0 -29
- package/scripts/fleet-git-commit-push.mjs +0 -75
- package/scripts/fleet-git-discard.mjs +0 -66
- package/scripts/fleet-git-pull.mjs +0 -65
- package/scripts/sync-core-coding-standards.mjs +0 -77
- package/scripts/sync-peers-from-dev.mjs +0 -31
- package/scripts/vuln-commit.mjs +0 -142
- /package/configs/{fallowrc.sync-stub.json → fallowrc.json} +0 -0
- /package/scripts/{dependency-policy-pins.mjs → lib/dependency-policy-pins.mjs} +0 -0
- /package/scripts/{fleet-project-repos.mjs → lib/fleet-project-repos.mjs} +0 -0
- /package/scripts/{fleet-repo-picker.mjs → lib/fleet-repo-picker.mjs} +0 -0
- /package/scripts/{fleet-vue-repos.mjs → lib/fleet-vue-repos.mjs} +0 -0
- /package/scripts/{git-fleet-common.mjs → lib/git-fleet-common.mjs} +0 -0
- /package/scripts/{node-toolchain-sync.mjs → lib/node-toolchain-sync.mjs} +0 -0
- /package/scripts/{piwik-common.mjs → lib/piwik-common.mjs} +0 -0
- /package/scripts/{piwik-dimensions.mjs → lib/piwik-dimensions.mjs} +0 -0
- /package/scripts/{pnpm-toolchain-sync.mjs → lib/pnpm-toolchain-sync.mjs} +0 -0
- /package/scripts/{poeditor-common.mjs → lib/poeditor-common.mjs} +0 -0
package/scripts/vuln-commit.mjs
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Git helper for security bumps: inspects staged package.json files, detects dependency
|
|
5
|
-
* version changes vs HEAD, and creates a conventional commit with a vuln() message.
|
|
6
|
-
*
|
|
7
|
-
* Intended for use as a bin (fg-vuln-commit / fds-vuln-commit) or from a git hook after
|
|
8
|
-
* staging lockfile/package.json changes. Requires a clean git invocation with staged changes.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { execSync } from "node:child_process";
|
|
12
|
-
|
|
13
|
-
/** Run a shell command and return stdout, or empty string on failure. */
|
|
14
|
-
function run(command) {
|
|
15
|
-
try {
|
|
16
|
-
return execSync(command, { encoding: "utf8" }).trim();
|
|
17
|
-
} catch {
|
|
18
|
-
return "";
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Run a shell command; throws on non-zero exit (stdio inherited). */
|
|
23
|
-
function runOrThrow(command) {
|
|
24
|
-
return execSync(command, { encoding: "utf8", stdio: "inherit" });
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function out(text = "") {
|
|
28
|
-
process.stdout.write(`${text}\n`);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Load JSON from a git object path (e.g. HEAD:package.json or :path for index). */
|
|
32
|
-
function parseJsonAtRef(refPath) {
|
|
33
|
-
const raw = run(`git show ${refPath}`);
|
|
34
|
-
if (!raw) return null;
|
|
35
|
-
try {
|
|
36
|
-
return JSON.parse(raw);
|
|
37
|
-
} catch {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function readStagedFile(path) {
|
|
43
|
-
return parseJsonAtRef(`:${path}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function readHeadFile(path) {
|
|
47
|
-
return parseJsonAtRef(`HEAD:${path}`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Flatten all version-bearing sections from a package.json for diffing. */
|
|
51
|
-
function collectDeps(pkgJson) {
|
|
52
|
-
if (!pkgJson) return {};
|
|
53
|
-
return {
|
|
54
|
-
...(pkgJson.dependencies || {}),
|
|
55
|
-
...(pkgJson.devDependencies || {}),
|
|
56
|
-
...(pkgJson.peerDependencies || {}),
|
|
57
|
-
...(pkgJson.optionalDependencies || {}),
|
|
58
|
-
...(pkgJson.overrides || {}),
|
|
59
|
-
...((pkgJson.pnpm && pkgJson.pnpm.overrides) || {}),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function normalize(version) {
|
|
64
|
-
if (typeof version !== "string") return version;
|
|
65
|
-
return version.trim();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function semverFrom(value) {
|
|
69
|
-
if (typeof value !== "string") return null;
|
|
70
|
-
const match = value.match(/(\d+\.\d+\.\d+)/);
|
|
71
|
-
return match ? match[1] : null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/** Entry: diff staged package.json files against HEAD, then commit with a vuln-prefixed message. */
|
|
75
|
-
function main() {
|
|
76
|
-
const stagedFiles = run("git diff --cached --name-only")
|
|
77
|
-
.split("\n")
|
|
78
|
-
.map((s) => s.trim())
|
|
79
|
-
.filter(Boolean);
|
|
80
|
-
|
|
81
|
-
const packageJsonPaths = stagedFiles.filter((p) => p.endsWith("package.json"));
|
|
82
|
-
if (packageJsonPaths.length === 0) {
|
|
83
|
-
out("No staged package.json changes found.");
|
|
84
|
-
process.exit(0);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const updates = [];
|
|
88
|
-
|
|
89
|
-
for (const path of packageJsonPaths) {
|
|
90
|
-
const stagedPkg = readStagedFile(path);
|
|
91
|
-
const headPkg = readHeadFile(path) || {};
|
|
92
|
-
if (!stagedPkg) continue;
|
|
93
|
-
|
|
94
|
-
const before = collectDeps(headPkg);
|
|
95
|
-
const after = collectDeps(stagedPkg);
|
|
96
|
-
const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
|
|
97
|
-
|
|
98
|
-
for (const name of keys) {
|
|
99
|
-
const oldV = normalize(before[name]);
|
|
100
|
-
const newV = normalize(after[name]);
|
|
101
|
-
if (oldV && newV && oldV !== newV) {
|
|
102
|
-
updates.push({ name, from: oldV, to: newV, path });
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (updates.length === 0) {
|
|
108
|
-
out("No staged dependency version changes found in package.json.");
|
|
109
|
-
process.exit(0);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
out("Detected staged dependency updates:\n");
|
|
113
|
-
for (const u of updates) {
|
|
114
|
-
out(`- ${u.name}: ${u.from} -> ${u.to} (${u.path})`);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const commitMessage =
|
|
118
|
-
updates.length === 1
|
|
119
|
-
? `vuln(${updates[0].name}@${semverFrom(updates[0].from) || updates[0].from}): bump to ${semverFrom(updates[0].to) || updates[0].to}`
|
|
120
|
-
: "vuln(): updated dependencies";
|
|
121
|
-
const commitBody =
|
|
122
|
-
updates.length > 1
|
|
123
|
-
? `updated dependencies\n${updates.map((u) => `- ${u.name}: ${u.from} -> ${u.to}`).join("\n")}`
|
|
124
|
-
: "";
|
|
125
|
-
|
|
126
|
-
const hasStagedChanges = run("git diff --cached --name-only");
|
|
127
|
-
if (!hasStagedChanges) {
|
|
128
|
-
out("\nNo staged changes to commit.");
|
|
129
|
-
process.exit(1);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const escapedMessage = commitMessage.replace(/"/g, '\\"');
|
|
133
|
-
const escapedBody = commitBody.replace(/"/g, '\\"');
|
|
134
|
-
const commitCommand = commitBody
|
|
135
|
-
? `git commit -m "${escapedMessage}" -m "${escapedBody}"`
|
|
136
|
-
: `git commit -m "${escapedMessage}"`;
|
|
137
|
-
|
|
138
|
-
out(`\nCreating commit:\n${commitMessage}\n`);
|
|
139
|
-
runOrThrow(commitCommand);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
main();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|