pr-checkmate 3.2.3 → 4.0.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/.eslintrc.js +3 -9
- package/LICENSE +8 -3
- package/README.md +54 -5
- package/dist/cjs/agent/hook.d.ts +37 -0
- package/dist/cjs/agent/hook.js +175 -0
- package/dist/cjs/agent/registration.d.ts +10 -0
- package/dist/cjs/agent/registration.js +28 -0
- package/dist/cjs/agent/setup.d.ts +20 -0
- package/dist/cjs/agent/setup.js +229 -0
- package/dist/cjs/cli.js +101 -0
- package/dist/cjs/config/constants.d.ts +2 -0
- package/dist/cjs/config/constants.js +5 -1
- package/dist/cjs/config/pr-checkmate.template.json +11 -1
- package/dist/cjs/core/checks/dependencies/grype-scan.js +18 -0
- package/dist/cjs/core/checks/findings.js +33 -7
- package/dist/cjs/core/checks/git/large-files.d.ts +1 -0
- package/dist/cjs/core/checks/git/large-files.js +3 -3
- package/dist/cjs/core/checks/languages/lint.js +12 -0
- package/dist/cjs/core/checks/languages/ruff-shared.js +6 -1
- package/dist/cjs/core/checks/pr/commitlint.js +4 -2
- package/dist/cjs/core/checks/pr/pr-size-check.d.ts +2 -0
- package/dist/cjs/core/checks/pr/pr-size-check.js +5 -5
- package/dist/cjs/core/checks/quality/package-size.d.ts +23 -1
- package/dist/cjs/core/checks/quality/package-size.js +20 -4
- package/dist/cjs/core/checks/quality/spellcheck.js +8 -5
- package/dist/cjs/core/checks/security/agent-instructions.d.ts +4 -0
- package/dist/cjs/core/checks/security/agent-instructions.js +149 -0
- package/dist/cjs/core/checks/security/diff-security.d.ts +7 -0
- package/dist/cjs/core/checks/security/diff-security.js +21 -1
- package/dist/cjs/core/checks/security/security.d.ts +0 -13
- package/dist/cjs/core/checks/security/security.js +27 -0
- package/dist/cjs/core/checks/security/workflow-security.js +33 -0
- package/dist/cjs/core/commands.d.ts +6 -0
- package/dist/cjs/core/commands.js +11 -1
- package/dist/cjs/core/finding-store.d.ts +16 -0
- package/dist/cjs/core/finding-store.js +73 -0
- package/dist/cjs/core/install/doctor.js +12 -0
- package/dist/cjs/core/install/grype-db.d.ts +25 -0
- package/dist/cjs/core/install/grype-db.js +45 -0
- package/dist/cjs/core/install/profiles.d.ts +1 -1
- package/dist/cjs/core/install/profiles.js +1 -1
- package/dist/cjs/core/install/reuse.js +6 -3
- package/dist/cjs/core/registry.js +2 -0
- package/dist/cjs/core/reporters.js +9 -0
- package/dist/cjs/core/run-checks.js +15 -5
- package/dist/cjs/core/sarif.d.ts +13 -0
- package/dist/cjs/core/sarif.js +60 -0
- package/dist/cjs/core/types.d.ts +7 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/init.d.ts +0 -8
- package/dist/cjs/init.js +12 -2
- package/dist/cjs/interfaces/index.d.ts +12 -0
- package/dist/cjs/mcp/config-tools.d.ts +30 -0
- package/dist/cjs/mcp/config-tools.js +320 -0
- package/dist/cjs/mcp/dependency.d.ts +33 -0
- package/dist/cjs/mcp/dependency.js +407 -0
- package/dist/cjs/mcp/protocol.d.ts +97 -0
- package/dist/cjs/mcp/protocol.js +181 -0
- package/dist/cjs/mcp/review.d.ts +63 -0
- package/dist/cjs/mcp/review.js +150 -0
- package/dist/cjs/mcp/serve.d.ts +8 -0
- package/dist/cjs/mcp/serve.js +49 -0
- package/dist/cjs/mcp/settings.d.ts +13 -0
- package/dist/cjs/mcp/settings.js +50 -0
- package/dist/cjs/mcp/tools.d.ts +23 -0
- package/dist/cjs/mcp/tools.js +633 -0
- package/dist/cjs/utils/execa.d.ts +7 -0
- package/dist/cjs/utils/execa.js +41 -1
- package/dist/cjs/utils/own-deps.js +8 -1
- package/dist/cjs/utils/resolve-bin.d.ts +2 -0
- package/dist/cjs/utils/resolve-bin.js +5 -0
- package/dist/cjs/utils/result-collector.d.ts +17 -1
- package/dist/cjs/utils/result-collector.js +7 -2
- package/dist/esm/agent/hook.d.ts +37 -0
- package/dist/esm/agent/hook.js +167 -0
- package/dist/esm/agent/registration.d.ts +10 -0
- package/dist/esm/agent/registration.js +21 -0
- package/dist/esm/agent/setup.d.ts +20 -0
- package/dist/esm/agent/setup.js +220 -0
- package/dist/esm/cli.js +100 -2
- package/dist/esm/config/constants.d.ts +2 -0
- package/dist/esm/config/constants.js +4 -0
- package/dist/esm/config/pr-checkmate.template.json +11 -1
- package/dist/esm/core/checks/dependencies/dependency-check.js +2 -2
- package/dist/esm/core/checks/dependencies/grype-scan.js +18 -0
- package/dist/esm/core/checks/dependencies/license-check.js +2 -2
- package/dist/esm/core/checks/dependencies/npm-audit.js +2 -2
- package/dist/esm/core/checks/findings.js +33 -7
- package/dist/esm/core/checks/git/diff-smell.js +1 -1
- package/dist/esm/core/checks/git/large-files.d.ts +1 -0
- package/dist/esm/core/checks/git/large-files.js +1 -1
- package/dist/esm/core/checks/languages/cpp-format.js +1 -1
- package/dist/esm/core/checks/languages/lint.js +12 -3
- package/dist/esm/core/checks/languages/prettier.js +3 -3
- package/dist/esm/core/checks/languages/python-format.js +2 -2
- package/dist/esm/core/checks/languages/python-lint.js +2 -2
- package/dist/esm/core/checks/languages/ruff-shared.js +6 -1
- package/dist/esm/core/checks/languages/typecheck.js +1 -1
- package/dist/esm/core/checks/pr/commitlint.js +4 -2
- package/dist/esm/core/checks/pr/pr-body.js +1 -1
- package/dist/esm/core/checks/pr/pr-size-check.d.ts +2 -0
- package/dist/esm/core/checks/pr/pr-size-check.js +3 -3
- package/dist/esm/core/checks/pr/pr-title-lint.js +1 -1
- package/dist/esm/core/checks/quality/dead-code.js +1 -1
- package/dist/esm/core/checks/quality/duplicate-check.js +1 -1
- package/dist/esm/core/checks/quality/markdown-lint.js +1 -1
- package/dist/esm/core/checks/quality/package-size.d.ts +23 -1
- package/dist/esm/core/checks/quality/package-size.js +19 -4
- package/dist/esm/core/checks/quality/spellcheck.js +11 -8
- package/dist/esm/core/checks/security/agent-instructions.d.ts +4 -0
- package/dist/esm/core/checks/security/agent-instructions.js +146 -0
- package/dist/esm/core/checks/security/diff-security.d.ts +7 -0
- package/dist/esm/core/checks/security/diff-security.js +21 -1
- package/dist/esm/core/checks/security/security.d.ts +0 -13
- package/dist/esm/core/checks/security/security.js +28 -1
- package/dist/esm/core/checks/security/workflow-security.js +33 -0
- package/dist/esm/core/commands.d.ts +6 -0
- package/dist/esm/core/commands.js +10 -0
- package/dist/esm/core/finding-store.d.ts +16 -0
- package/dist/esm/core/finding-store.js +67 -0
- package/dist/esm/core/install/doctor.js +12 -0
- package/dist/esm/core/install/grype-db.d.ts +25 -0
- package/dist/esm/core/install/grype-db.js +41 -0
- package/dist/esm/core/install/prepare.js +1 -1
- package/dist/esm/core/install/profiles.d.ts +1 -1
- package/dist/esm/core/install/profiles.js +1 -1
- package/dist/esm/core/install/reuse.js +6 -3
- package/dist/esm/core/registry.js +2 -0
- package/dist/esm/core/reporters.js +9 -0
- package/dist/esm/core/run-checks.js +17 -7
- package/dist/esm/core/sarif.d.ts +13 -0
- package/dist/esm/core/sarif.js +57 -0
- package/dist/esm/core/types.d.ts +7 -2
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/init.d.ts +0 -8
- package/dist/esm/init.js +15 -4
- package/dist/esm/interfaces/index.d.ts +12 -0
- package/dist/esm/mcp/config-tools.d.ts +30 -0
- package/dist/esm/mcp/config-tools.js +310 -0
- package/dist/esm/mcp/dependency.d.ts +33 -0
- package/dist/esm/mcp/dependency.js +402 -0
- package/dist/esm/mcp/protocol.d.ts +97 -0
- package/dist/esm/mcp/protocol.js +175 -0
- package/dist/esm/mcp/review.d.ts +63 -0
- package/dist/esm/mcp/review.js +139 -0
- package/dist/esm/mcp/serve.d.ts +8 -0
- package/dist/esm/mcp/serve.js +43 -0
- package/dist/esm/mcp/settings.d.ts +13 -0
- package/dist/esm/mcp/settings.js +43 -0
- package/dist/esm/mcp/tools.d.ts +23 -0
- package/dist/esm/mcp/tools.js +626 -0
- package/dist/esm/utils/execa.d.ts +7 -0
- package/dist/esm/utils/execa.js +40 -1
- package/dist/esm/utils/own-deps.js +8 -1
- package/dist/esm/utils/resolve-bin.d.ts +2 -0
- package/dist/esm/utils/resolve-bin.js +4 -0
- package/dist/esm/utils/result-collector.d.ts +17 -1
- package/dist/esm/utils/result-collector.js +7 -2
- package/eslint-default-rules.json +2 -8
- package/eslint.config.mjs +37 -8
- package/install-manifests/commitlint/package-lock.json +5 -4
- package/install-manifests/core/package-lock.json +5 -3
- package/install-manifests/js/package-lock.json +250 -571
- package/install-manifests/js/package.json +10 -8
- package/install-manifests/markdown/package-lock.json +16 -13
- package/install-manifests/markdown/package.json +3 -0
- package/install-manifests/spellcheck/package-lock.json +3 -3
- package/package.json +24 -16
- package/pr-checkmate.schema.json +35 -0
- package/src/config/.eslintrc.js +3 -9
- package/src/config/eslint-default-rules.json +2 -8
- package/src/config/pr-checkmate.schema.json +35 -0
package/dist/esm/utils/execa.js
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether children that would inherit our standard streams are kept off them.
|
|
3
|
+
*
|
|
4
|
+
* A few checks run a tool with `stdio: 'inherit'` so its output reaches the
|
|
5
|
+
* terminal. That is right for the CLI and fatal for the MCP server, whose stdout
|
|
6
|
+
* *is* the protocol: gitleaks printing its banner there is a line that is not
|
|
7
|
+
* JSON, and the client drops the connection. Swapping `process.stdout.write`
|
|
8
|
+
* cannot help, because an inherited descriptor never passes through it — so the
|
|
9
|
+
* redirection has to happen where the child is spawned.
|
|
10
|
+
*/
|
|
11
|
+
let childOutput = null;
|
|
12
|
+
/**
|
|
13
|
+
* Keep children that would inherit our streams off them, and stop them sharing
|
|
14
|
+
* stdin. `stderr` (the MCP server) keeps their output as the server's log;
|
|
15
|
+
* `discard` (the commit hook) drops it, because a hook's stderr is read by the
|
|
16
|
+
* model and tool banners are not what it needs to hear. No other command is affected.
|
|
17
|
+
*/
|
|
18
|
+
export function isolateInheritedStdio(output = 'stderr') {
|
|
19
|
+
childOutput = output === 'stderr' ? 2 : 'ignore';
|
|
20
|
+
}
|
|
21
|
+
/** Redirect inherited stdout/stderr per {@link isolateInheritedStdio}; stdin is never ours to give away. */
|
|
22
|
+
function isolated(options) {
|
|
23
|
+
if (childOutput === null || !options)
|
|
24
|
+
return options;
|
|
25
|
+
const { stdio } = options;
|
|
26
|
+
if (stdio === 'inherit')
|
|
27
|
+
return { ...options, stdio: ['ignore', childOutput, childOutput] };
|
|
28
|
+
if (Array.isArray(stdio)) {
|
|
29
|
+
const next = stdio.map((entry, fd) => {
|
|
30
|
+
if (fd === 0 && entry === 'inherit')
|
|
31
|
+
return 'ignore';
|
|
32
|
+
if ((fd === 1 || fd === 2) && entry === 'inherit')
|
|
33
|
+
return childOutput;
|
|
34
|
+
return entry;
|
|
35
|
+
});
|
|
36
|
+
return { ...options, stdio: next };
|
|
37
|
+
}
|
|
38
|
+
return options;
|
|
39
|
+
}
|
|
1
40
|
/**
|
|
2
41
|
* Run a command via execa, loading the module lazily on first call.
|
|
3
42
|
*
|
|
@@ -6,5 +45,5 @@
|
|
|
6
45
|
*/
|
|
7
46
|
export async function execa(file, args, options) {
|
|
8
47
|
const { execa: run } = await import('execa');
|
|
9
|
-
return (await run(file, args, options));
|
|
48
|
+
return (await run(file, args, isolated(options)));
|
|
10
49
|
}
|
|
@@ -3,6 +3,7 @@ import { dirname as __dirnameFn } from 'node:path';
|
|
|
3
3
|
const __dirname = __dirnameFn(__fileURLToPath(import.meta.url));
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
+
import { PROFILES } from '../core/install/profiles.js';
|
|
6
7
|
const OWN_PACKAGE_NAME = 'pr-checkmate';
|
|
7
8
|
const PACKAGE_JSON = 'package.json';
|
|
8
9
|
let cachedClosure;
|
|
@@ -85,7 +86,13 @@ export function getOwnDependencyClosure() {
|
|
|
85
86
|
}
|
|
86
87
|
// BFS over the dependency graph, resolving each package relative to the parent
|
|
87
88
|
// that declared it so nested (non-hoisted) installs resolve correctly.
|
|
88
|
-
|
|
89
|
+
//
|
|
90
|
+
// Profile tooling is ours even though it no longer sits in `dependencies`: it is
|
|
91
|
+
// fetched on demand, so the roots are what we declare plus what the profiles
|
|
92
|
+
// name. Without the second half every fetched tool is "the client's" and its
|
|
93
|
+
// licence blocks the client for a dependency they cannot remove.
|
|
94
|
+
const roots = new Set([...readDependencyNames(root), ...PROFILES.flatMap(p => p.packages)]);
|
|
95
|
+
const queue = [...roots].map(name => ({
|
|
89
96
|
name,
|
|
90
97
|
fromDir: root,
|
|
91
98
|
}));
|
|
@@ -16,6 +16,8 @@ export interface ResolvedTool {
|
|
|
16
16
|
* to a run from before there was anything to fetch.
|
|
17
17
|
*/
|
|
18
18
|
export declare function registerToolPaths(dirs: string[]): void;
|
|
19
|
+
/** The roots registered for this run, for tools that load plugins by themselves. */
|
|
20
|
+
export declare function registeredToolPaths(): string[];
|
|
19
21
|
/** Drop every registered profile root. For tests, and for a second run in-process. */
|
|
20
22
|
export declare function clearToolPaths(): void;
|
|
21
23
|
/** The root of the installed pr-checkmate package — where our own tooling lives. */
|
|
@@ -25,6 +25,10 @@ let profileRoots = [];
|
|
|
25
25
|
export function registerToolPaths(dirs) {
|
|
26
26
|
profileRoots = [...dirs];
|
|
27
27
|
}
|
|
28
|
+
/** The roots registered for this run, for tools that load plugins by themselves. */
|
|
29
|
+
export function registeredToolPaths() {
|
|
30
|
+
return [...profileRoots];
|
|
31
|
+
}
|
|
28
32
|
/** Drop every registered profile root. For tests, and for a second run in-process. */
|
|
29
33
|
export function clearToolPaths() {
|
|
30
34
|
profileRoots = [];
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
export type CheckStatus = 'pass' | 'warn' | 'fail' | 'skip';
|
|
2
|
+
/**
|
|
3
|
+
* One thing a check found, with where it is. Optional on every result: only the
|
|
4
|
+
* checks that can say where report it, and a result without any is not an error —
|
|
5
|
+
* it just has a summary and no location.
|
|
6
|
+
*/
|
|
7
|
+
export interface Finding {
|
|
8
|
+
file: string;
|
|
9
|
+
/** 1-based line in the file as it will be committed. */
|
|
10
|
+
line?: number;
|
|
11
|
+
/** Which rule or pattern matched, as the check names it. */
|
|
12
|
+
rule: string;
|
|
13
|
+
/** The offending text, shortened. Never a secret: scanners that find those leave it out. */
|
|
14
|
+
snippet?: string;
|
|
15
|
+
severity: 'error' | 'warn';
|
|
16
|
+
}
|
|
2
17
|
export interface CheckResult {
|
|
3
18
|
name: string;
|
|
4
19
|
status: CheckStatus;
|
|
5
20
|
details?: string;
|
|
21
|
+
findings?: Finding[];
|
|
6
22
|
}
|
|
7
23
|
/**
|
|
8
24
|
*
|
|
@@ -12,7 +28,7 @@ export declare class ResultCollector {
|
|
|
12
28
|
/**
|
|
13
29
|
*
|
|
14
30
|
*/
|
|
15
|
-
register(name: string, status: CheckStatus, details?: string): void;
|
|
31
|
+
register(name: string, status: CheckStatus, details?: string, findings?: Finding[]): void;
|
|
16
32
|
/**
|
|
17
33
|
*
|
|
18
34
|
*/
|
|
@@ -8,9 +8,14 @@ export class ResultCollector {
|
|
|
8
8
|
/**
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
|
-
register(name, status, details) {
|
|
11
|
+
register(name, status, details, findings) {
|
|
12
12
|
const idx = this.results.findIndex(r => r.name === name);
|
|
13
|
-
const entry = {
|
|
13
|
+
const entry = {
|
|
14
|
+
name,
|
|
15
|
+
status,
|
|
16
|
+
...(details && { details }),
|
|
17
|
+
...(findings && findings.length > 0 && { findings }),
|
|
18
|
+
};
|
|
14
19
|
if (idx >= 0) {
|
|
15
20
|
this.results[idx] = entry;
|
|
16
21
|
}
|
|
@@ -26,14 +26,8 @@
|
|
|
26
26
|
"sonarjs/cognitive-complexity": ["warn", 30],
|
|
27
27
|
"sonarjs/no-duplicate-string": ["warn", { "threshold": 3 }],
|
|
28
28
|
"sonarjs/no-identical-functions": "warn",
|
|
29
|
-
"import/
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
|
|
33
|
-
"alphabetize": { "order": "asc", "caseInsensitive": true }
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
"import/no-duplicates": "error",
|
|
29
|
+
"simple-import-sort/imports": "warn",
|
|
30
|
+
"no-duplicate-imports": ["error", { "allowSeparateTypeImports": true }],
|
|
37
31
|
"jsdoc/check-param-names": "warn",
|
|
38
32
|
"jsdoc/check-tag-names": "warn",
|
|
39
33
|
"jsdoc/check-types": "warn",
|
package/eslint.config.mjs
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import
|
|
4
|
+
import { pathToFileURL } from 'url';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Plugins are loaded through the roots pr-checkmate registered for this run
|
|
8
|
+
* (`PR_CHECKMATE_TOOL_ROOTS`), because the `js` profile is fetched into a cache
|
|
9
|
+
* directory when a repository needs it and a bare `import` only searches the tree
|
|
10
|
+
* this file sits in. With no roots — development, or tooling that shipped beside
|
|
11
|
+
* the package — it is the plain import it always was.
|
|
12
|
+
*/
|
|
13
|
+
const toolRoots = (process.env.PR_CHECKMATE_TOOL_ROOTS ?? '').split(path.delimiter).filter(Boolean);
|
|
14
|
+
const resolveFrom = createRequire(import.meta.url);
|
|
15
|
+
|
|
16
|
+
async function loadPlugin(name) {
|
|
17
|
+
for (const root of toolRoots) {
|
|
18
|
+
try {
|
|
19
|
+
const entry = resolveFrom.resolve(name, { paths: [root] });
|
|
20
|
+
const mod = await import(pathToFileURL(entry).href);
|
|
21
|
+
|
|
22
|
+
return mod.default ?? mod;
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
const mod = await import(name);
|
|
26
|
+
|
|
27
|
+
return mod.default ?? mod;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const [tsPlugin, tsParser, prettierPlugin, sonarjsPlugin, jsdocPlugin, simpleImportSort] =
|
|
31
|
+
await Promise.all([
|
|
32
|
+
loadPlugin('@typescript-eslint/eslint-plugin'),
|
|
33
|
+
loadPlugin('@typescript-eslint/parser'),
|
|
34
|
+
loadPlugin('eslint-plugin-prettier'),
|
|
35
|
+
loadPlugin('eslint-plugin-sonarjs'),
|
|
36
|
+
loadPlugin('eslint-plugin-jsdoc'),
|
|
37
|
+
loadPlugin('eslint-plugin-simple-import-sort'),
|
|
38
|
+
]);
|
|
10
39
|
|
|
11
40
|
/**
|
|
12
41
|
* Default ESLint rules — single source of truth, shared with init.ts so the
|
|
@@ -15,7 +44,7 @@ import jsdocPlugin from 'eslint-plugin-jsdoc';
|
|
|
15
44
|
*
|
|
16
45
|
* SEVERITY POLICY: `error` is reserved for defects a human has to resolve —
|
|
17
46
|
* `no-debugger`, `eqeqeq`, `prefer-const`, `@typescript-eslint/no-unused-vars`,
|
|
18
|
-
* `@typescript-eslint/no-floating-promises`, `
|
|
47
|
+
* `@typescript-eslint/no-floating-promises`, `no-duplicate-imports`. Everything
|
|
19
48
|
* that is purely formatting is `warn`, even
|
|
20
49
|
* though it is auto-fixable, precisely BECAUSE it is auto-fixable: ESLint exits 1
|
|
21
50
|
* on errors only, and the ESLint check maps exit 1 to a blocking failure, so an
|
|
@@ -179,7 +208,7 @@ export default [
|
|
|
179
208
|
'@typescript-eslint': tsPlugin,
|
|
180
209
|
prettier: prettierPlugin,
|
|
181
210
|
sonarjs: sonarjsPlugin,
|
|
182
|
-
import:
|
|
211
|
+
'simple-import-sort': simpleImportSort,
|
|
183
212
|
jsdoc: jsdocPlugin,
|
|
184
213
|
},
|
|
185
214
|
|
|
@@ -421,6 +421,7 @@
|
|
|
421
421
|
"version": "26.6.2",
|
|
422
422
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz",
|
|
423
423
|
"integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==",
|
|
424
|
+
"devOptional": true,
|
|
424
425
|
"license": "MIT",
|
|
425
426
|
"dependencies": {
|
|
426
427
|
"undici-types": "~8.9.0"
|
|
@@ -481,7 +482,6 @@
|
|
|
481
482
|
"version": "6.0.1",
|
|
482
483
|
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-6.0.1.tgz",
|
|
483
484
|
"integrity": "sha512-cs+LadpH7Kpw0M3k8wurk+sOVVDAENA0iK4OBOrkL94j5lEVYRJ4j3zd2bhY9qgzyrPqthdcYT3axzRN7AliMg==",
|
|
484
|
-
"devOptional": true,
|
|
485
485
|
"license": "MIT",
|
|
486
486
|
"engines": {
|
|
487
487
|
"node": ">=22"
|
|
@@ -616,9 +616,9 @@
|
|
|
616
616
|
"license": "MIT"
|
|
617
617
|
},
|
|
618
618
|
"node_modules/fast-uri": {
|
|
619
|
-
"version": "3.1.
|
|
620
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
621
|
-
"integrity": "sha512-
|
|
619
|
+
"version": "3.1.9",
|
|
620
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
|
|
621
|
+
"integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
|
|
622
622
|
"funding": [
|
|
623
623
|
{
|
|
624
624
|
"type": "github",
|
|
@@ -874,6 +874,7 @@
|
|
|
874
874
|
"version": "8.9.0",
|
|
875
875
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
|
|
876
876
|
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
|
|
877
|
+
"devOptional": true,
|
|
877
878
|
"license": "MIT"
|
|
878
879
|
},
|
|
879
880
|
"node_modules/wrap-ansi": {
|
|
@@ -376,6 +376,7 @@
|
|
|
376
376
|
"version": "26.6.2",
|
|
377
377
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz",
|
|
378
378
|
"integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==",
|
|
379
|
+
"devOptional": true,
|
|
379
380
|
"license": "MIT",
|
|
380
381
|
"dependencies": {
|
|
381
382
|
"undici-types": "~8.9.0"
|
|
@@ -906,9 +907,9 @@
|
|
|
906
907
|
}
|
|
907
908
|
},
|
|
908
909
|
"node_modules/toml": {
|
|
909
|
-
"version": "5.0.
|
|
910
|
-
"resolved": "https://registry.npmjs.org/toml/-/toml-5.0.
|
|
911
|
-
"integrity": "sha512-
|
|
910
|
+
"version": "5.0.1",
|
|
911
|
+
"resolved": "https://registry.npmjs.org/toml/-/toml-5.0.1.tgz",
|
|
912
|
+
"integrity": "sha512-EqYNA/YvUNndrA2B3O2ojzLQoTQrBxeZ9UIjQwk8t10oe6n7dwclBwd9IdZQTOKwe6vWX+AXtl6IntXRbepdxQ==",
|
|
912
913
|
"license": "MIT",
|
|
913
914
|
"engines": {
|
|
914
915
|
"node": ">=20"
|
|
@@ -918,6 +919,7 @@
|
|
|
918
919
|
"version": "8.9.0",
|
|
919
920
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
|
|
920
921
|
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
|
|
922
|
+
"devOptional": true,
|
|
921
923
|
"license": "MIT"
|
|
922
924
|
},
|
|
923
925
|
"node_modules/unicorn-magic": {
|