@savvy-web/silk-effects 9.5.4 → 9.6.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/_virtual/_rolldown/runtime.js +1 -2
- package/changesets/api/categories.js +1 -2
- package/changesets/api/changelog.js +1 -2
- package/changesets/api/dependency-table.js +1 -2
- package/changesets/api/linter.js +1 -2
- package/changesets/api/transformer.js +1 -2
- package/changesets/categories/index.js +1 -2
- package/changesets/categories/types.js +1 -2
- package/changesets/changelog/formatting.js +1 -2
- package/changesets/changelog/getDependencyReleaseLine.js +1 -2
- package/changesets/changelog/getReleaseLine.js +20 -57
- package/changesets/changelog/index.js +1 -2
- package/changesets/changelog/vanilla.js +1 -2
- package/changesets/constants.js +1 -2
- package/changesets/errors.js +1 -2
- package/changesets/index.js +1 -2
- package/changesets/markdownlint/index.js +1 -2
- package/changesets/markdownlint/rules/content-structure.js +1 -2
- package/changesets/markdownlint/rules/dependency-table-format.js +1 -2
- package/changesets/markdownlint/rules/heading-hierarchy.js +1 -2
- package/changesets/markdownlint/rules/required-sections.js +1 -2
- package/changesets/markdownlint/rules/uncategorized-content.js +1 -2
- package/changesets/markdownlint/rules/utils.js +1 -2
- package/changesets/remark/plugins/aggregate-dependency-tables.js +1 -2
- package/changesets/remark/plugins/contributor-footnotes.js +1 -2
- package/changesets/remark/plugins/deduplicate-items.js +1 -2
- package/changesets/remark/plugins/issue-link-refs.js +1 -2
- package/changesets/remark/plugins/maintenance-note.js +1 -2
- package/changesets/remark/plugins/merge-sections.js +1 -2
- package/changesets/remark/plugins/normalize-format.js +1 -2
- package/changesets/remark/plugins/reorder-sections.js +1 -2
- package/changesets/remark/presets.js +1 -2
- package/changesets/remark/rules/content-structure.js +1 -2
- package/changesets/remark/rules/dependency-table-format.js +1 -2
- package/changesets/remark/rules/heading-hierarchy.js +1 -2
- package/changesets/remark/rules/required-sections.js +1 -2
- package/changesets/remark/rules/uncategorized-content.js +1 -2
- package/changesets/schemas/changeset.js +1 -2
- package/changesets/schemas/dependency-table.js +1 -2
- package/changesets/schemas/deps-regen.js +1 -2
- package/changesets/schemas/git.js +1 -2
- package/changesets/schemas/github.js +1 -2
- package/changesets/schemas/options.js +1 -2
- package/changesets/schemas/package-scope.js +1 -2
- package/changesets/schemas/primitives.js +1 -2
- package/changesets/schemas/release-plan.js +1 -2
- package/changesets/schemas/version-files.js +1 -2
- package/changesets/services/branch-analyzer.js +1 -2
- package/changesets/services/changelog.js +1 -2
- package/changesets/services/config-inspector.js +1 -2
- package/changesets/services/deps-regen.js +1 -2
- package/changesets/services/github.js +1 -2
- package/changesets/services/maintenance-reason.js +1 -2
- package/changesets/services/release-planner.js +1 -2
- package/changesets/utils/commit-parser.js +1 -2
- package/changesets/utils/dep-diff.js +1 -2
- package/changesets/utils/dependency-section.js +1 -2
- package/changesets/utils/dependency-table.js +1 -2
- package/changesets/utils/git.js +1 -2
- package/changesets/utils/issue-refs.js +1 -2
- package/changesets/utils/jsonpath.js +1 -2
- package/changesets/utils/logger.js +1 -2
- package/changesets/utils/markdown-emit.js +42 -19
- package/changesets/utils/markdown-link.js +1 -2
- package/changesets/utils/publishability.js +1 -2
- package/changesets/utils/remark-pipeline.js +2 -50
- package/changesets/utils/section-parser.js +33 -64
- package/changesets/utils/strip-frontmatter.js +1 -2
- package/changesets/utils/version-blocks.js +1 -2
- package/changesets/utils/version-files.js +1 -2
- package/changesets/vendor/github-info.js +1 -2
- package/commitlint/config/factory.js +1 -2
- package/commitlint/config/plugins.js +1 -2
- package/commitlint/config/rules.js +1 -2
- package/commitlint/config/schema.js +1 -2
- package/commitlint/detection/dco.js +1 -2
- package/commitlint/detection/scopes.js +1 -2
- package/commitlint/formatter/format.js +1 -2
- package/commitlint/formatter/messages.js +1 -2
- package/commitlint/hook/diagnostics/branch.js +1 -2
- package/commitlint/hook/diagnostics/cache.js +1 -2
- package/commitlint/hook/diagnostics/commitlint-config.js +1 -2
- package/commitlint/hook/diagnostics/open-issues.js +1 -2
- package/commitlint/hook/diagnostics/package-manager.js +1 -2
- package/commitlint/hook/diagnostics/signing.js +1 -2
- package/commitlint/hook/envelope.js +1 -2
- package/commitlint/hook/output.js +1 -2
- package/commitlint/hook/parse-bash-command.js +1 -2
- package/commitlint/hook/rules/closes-trailer.js +1 -2
- package/commitlint/hook/rules/forbidden-content.js +1 -2
- package/commitlint/hook/rules/plan-leakage.js +1 -2
- package/commitlint/hook/rules/signing-flag-conflict.js +1 -2
- package/commitlint/hook/rules/soft-wrap.js +1 -2
- package/commitlint/hook/rules/types.js +1 -2
- package/commitlint/hook/rules/verbosity.js +1 -2
- package/commitlint/hook/silence-logger.js +1 -2
- package/commitlint/index.js +1 -2
- package/commitlint/prompt/config.js +1 -2
- package/commitlint/prompt/emojis.js +1 -2
- package/commitlint/prompt/prompter.js +1 -2
- package/commitlint/static.js +1 -2
- package/index.d.ts +87 -251
- package/index.js +2 -2
- package/lint/Handler.js +1 -2
- package/lint/cli/sections.js +1 -2
- package/lint/cli/templates/markdownlint.gen.js +1 -2
- package/lint/config/Preset.js +1 -2
- package/lint/config/createConfig.js +1 -2
- package/lint/handlers/Biome.js +1 -2
- package/lint/handlers/Markdown.js +1 -2
- package/lint/handlers/PackageJson.js +1 -2
- package/lint/handlers/PnpmWorkspace.js +1 -2
- package/lint/handlers/ShellScripts.js +1 -2
- package/lint/handlers/TextFiles.js +1 -2
- package/lint/handlers/TypeScript.js +1 -2
- package/lint/handlers/Yaml.js +1 -2
- package/lint/index.js +1 -2
- package/lint/utils/Command.js +1 -2
- package/lint/utils/Filter.js +1 -2
- package/lint/utils/Workspace.js +1 -2
- package/package.json +14 -15
- package/repos/constants.js +1 -2
- package/repos/errors.js +1 -2
- package/repos/index.js +1 -2
- package/repos/schemas/drift.js +1 -2
- package/repos/schemas/manifest.js +1 -2
- package/repos/schemas/reports.js +1 -2
- package/repos/services/config-store.js +1 -2
- package/repos/services/drift.js +1 -2
- package/repos/services/lockdown.js +1 -2
- package/repos/services/manager.js +1 -2
- package/services/BiomeSchemaSync.js +1 -2
- package/services/ChangesetConfig.js +1 -2
- package/services/ChangesetConfigReader.js +1 -2
- package/services/ConfigDiscovery.js +1 -2
- package/services/SilkPublishability.js +147 -6
- package/services/SilkWorkspaceAnalyzer.js +1 -2
- package/turbo/digest.js +1 -2
- package/turbo/errors.js +1 -2
- package/turbo/index.js +1 -2
- package/turbo/schemas/DryRun.js +1 -2
- package/turbo/schemas/results.js +1 -2
- package/turbo/services/TurboInspector.js +1 -2
|
@@ -1,96 +1,65 @@
|
|
|
1
1
|
import { fromHeading } from "../categories/index.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { emitKitMarkdown } from "./markdown-emit.js";
|
|
3
|
+
import { MarkdownTransform, Mdast, Root } from "@effected/markdown";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/changesets/utils/section-parser.ts
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Slice an already-parsed changeset tree into categorized sections.
|
|
8
8
|
*
|
|
9
9
|
* @remarks
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* {@link SectionCategory} via `fromHeading()`, and collect all nodes
|
|
16
|
-
* between this h2 and the next h2 (or end of document) as the section
|
|
17
|
-
* content
|
|
10
|
+
* Split from {@link parseChangesetSections} so a caller can transform the
|
|
11
|
+
* tree (the renderer appends attribution with `MarkdownTransform.map`) and
|
|
12
|
+
* re-slice it without re-parsing. A section runs from its h2 to the next
|
|
13
|
+
* root-level h2 (or the end of the summary); a stray h1 inside a section stays
|
|
14
|
+
* in that section's content, as it always has.
|
|
18
15
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* If no h2 headings are present, the entire content is returned as the preamble
|
|
24
|
-
* with an empty sections array (backward-compatible flat-text mode).
|
|
25
|
-
*
|
|
26
|
-
* Unknown headings (those not recognized by `fromHeading()`) are silently
|
|
27
|
-
* skipped; validation of heading names is the responsibility of Layer 1
|
|
28
|
-
* (remark-lint).
|
|
29
|
-
*
|
|
30
|
-
* @param summary - The changeset summary markdown
|
|
16
|
+
* @param tree - The parsed summary
|
|
17
|
+
* @param summary - The summary source, returned verbatim as the preamble in
|
|
18
|
+
* flat-text mode
|
|
31
19
|
* @returns Parsed sections and optional preamble
|
|
32
20
|
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```typescript
|
|
35
|
-
* import { parseChangesetSections } from "../utils/section-parser.js";
|
|
36
|
-
*
|
|
37
|
-
* const result = parseChangesetSections("## Features\n\n- New API\n\n## Bug Fixes\n\n- Fixed crash");
|
|
38
|
-
* // result.sections.length === 2
|
|
39
|
-
* // result.sections[0].category === "Features"
|
|
40
|
-
* // result.preamble === undefined
|
|
41
|
-
* ```
|
|
42
|
-
*
|
|
43
21
|
* @internal
|
|
44
22
|
*/
|
|
45
|
-
function
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
for (let i = 0; i < tree.children.length; i++) {
|
|
49
|
-
const node = tree.children[i];
|
|
50
|
-
if (node.type === "heading" && node.depth === 2) h2Indices.push(i);
|
|
51
|
-
}
|
|
52
|
-
if (h2Indices.length === 0) return {
|
|
23
|
+
function sectionsOf(tree, summary) {
|
|
24
|
+
const spans = MarkdownTransform.sections(tree, { depth: 2 });
|
|
25
|
+
if (spans.length === 0) return {
|
|
53
26
|
preamble: summary.trim(),
|
|
54
27
|
sections: []
|
|
55
28
|
};
|
|
56
29
|
const result = { sections: [] };
|
|
57
|
-
if (
|
|
58
|
-
for (let i = 0; i <
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const contentNodes = tree.children.slice(headingIndex + 1, nextIndex);
|
|
64
|
-
const content = stringifyAstSlice(contentNodes);
|
|
30
|
+
if (spans[0].headingIndex > 0) result.preamble = stringifyAstSlice(tree.children.slice(0, spans[0].headingIndex));
|
|
31
|
+
for (let i = 0; i < spans.length; i++) {
|
|
32
|
+
const span = spans[i];
|
|
33
|
+
const headingText = Mdast.toText(span.heading);
|
|
34
|
+
const end = i + 1 < spans.length ? spans[i + 1].headingIndex : tree.children.length;
|
|
35
|
+
const contentNodes = tree.children.slice(span.headingIndex + 1, end).filter(isFlowContent);
|
|
65
36
|
const category = fromHeading(headingText);
|
|
66
37
|
if (category) result.sections.push({
|
|
67
38
|
category,
|
|
68
39
|
heading: headingText,
|
|
69
|
-
content,
|
|
40
|
+
content: stringifyAstSlice(contentNodes),
|
|
70
41
|
contentNodes
|
|
71
42
|
});
|
|
72
43
|
}
|
|
73
44
|
return result;
|
|
74
45
|
}
|
|
75
46
|
/**
|
|
76
|
-
*
|
|
47
|
+
* Narrow a root child to block content (frontmatter capture is off and the
|
|
48
|
+
* dialect is GFM, so this only ever drops nothing).
|
|
77
49
|
*
|
|
78
|
-
* @
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
function isFlowContent(node) {
|
|
53
|
+
return node.type !== "frontmatter" && node.type !== "mdxjsEsm";
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Stringify a slice of root children back to trimmed markdown.
|
|
84
57
|
*
|
|
85
58
|
* @internal
|
|
86
59
|
*/
|
|
87
60
|
function stringifyAstSlice(nodes) {
|
|
88
61
|
if (nodes.length === 0) return "";
|
|
89
|
-
return
|
|
90
|
-
type: "root",
|
|
91
|
-
children: nodes
|
|
92
|
-
}).trim();
|
|
62
|
+
return emitKitMarkdown(new Root({ children: nodes })).trim();
|
|
93
63
|
}
|
|
94
64
|
|
|
95
|
-
|
|
96
|
-
export { parseChangesetSections };
|
|
65
|
+
export { sectionsOf };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/changesets/utils/strip-frontmatter.ts
|
|
2
2
|
/**
|
|
3
3
|
* Strip leading YAML frontmatter from a markdown string.
|
|
4
4
|
*
|
|
@@ -23,5 +23,4 @@ function stripFrontmatter(content) {
|
|
|
23
23
|
return content.replace(/^---\n[\s\S]*?\n---\n?/, "");
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
//#endregion
|
|
27
26
|
export { stripFrontmatter };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { toString } from "mdast-util-to-string";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/changesets/utils/version-blocks.ts
|
|
4
4
|
/**
|
|
5
5
|
* Extract all version blocks from a CHANGELOG AST.
|
|
6
6
|
*
|
|
@@ -104,5 +104,4 @@ function getHeadingText(heading) {
|
|
|
104
104
|
return toString(heading);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
//#endregion
|
|
108
107
|
export { getBlockSections, getHeadingText, getVersionBlocks };
|
|
@@ -7,7 +7,7 @@ import { GlobPatternOptions } from "@effected/glob";
|
|
|
7
7
|
import { compileAndExpand } from "@effected/walker";
|
|
8
8
|
import { Jsonc, JsoncEdit, JsoncFormattingOptions, JsoncModifier } from "@effected/jsonc";
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
// src/changesets/utils/version-files.ts
|
|
11
11
|
/**
|
|
12
12
|
* Utilities for updating version fields in additional JSON files.
|
|
13
13
|
*
|
|
@@ -501,5 +501,4 @@ function readPackageVersion(dir) {
|
|
|
501
501
|
}).pipe(Effect.orElseSucceed(() => void 0));
|
|
502
502
|
}
|
|
503
503
|
|
|
504
|
-
//#endregion
|
|
505
504
|
export { VersionFiles };
|
|
@@ -2,7 +2,7 @@ import { GitHubApiError } from "../errors.js";
|
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { getCommitInfo } from "@changesets/get-github-info";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/changesets/vendor/github-info.ts
|
|
6
6
|
/**
|
|
7
7
|
* Effect wrapper around `\@changesets/get-github-info`.
|
|
8
8
|
*
|
|
@@ -73,5 +73,4 @@ function getGitHubInfo(params) {
|
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
//#endregion
|
|
77
76
|
export { getGitHubInfo };
|
|
@@ -3,7 +3,7 @@ import { COMMIT_TYPES } from "./rules.js";
|
|
|
3
3
|
import { createPromptConfig } from "../prompt/config.js";
|
|
4
4
|
import { createScopeEnumRule, silkPlugin } from "./plugins.js";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/commitlint/config/factory.ts
|
|
7
7
|
/**
|
|
8
8
|
* Configuration factory implementation.
|
|
9
9
|
*
|
|
@@ -65,5 +65,4 @@ function createConfig(options) {
|
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
//#endregion
|
|
69
68
|
export { createConfig };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TDD_SCOPE_PATTERN } from "./rules.js";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/config/plugins.ts
|
|
4
4
|
/**
|
|
5
5
|
* Custom commitlint plugin rules.
|
|
6
6
|
*
|
|
@@ -226,5 +226,4 @@ function createScopeEnumRule(scopes) {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
//#endregion
|
|
230
229
|
export { createScopeEnumRule, silkPlugin };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/commitlint/config/rules.ts
|
|
2
2
|
/**
|
|
3
3
|
* Allowed commit types for conventional commits.
|
|
4
4
|
*
|
|
@@ -151,5 +151,4 @@ const COMMIT_TYPE_DEFINITIONS = [
|
|
|
151
151
|
*/
|
|
152
152
|
const DCO_SIGNOFF_TEXT = "Signed-off-by:";
|
|
153
153
|
|
|
154
|
-
//#endregion
|
|
155
154
|
export { COMMIT_TYPES, COMMIT_TYPE_DEFINITIONS, DCO_SIGNOFF_TEXT, TDD_SCOPE_PATTERN, TDD_STATES };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/config/schema.ts
|
|
4
4
|
/**
|
|
5
5
|
* Effect Schemas for commitlint configuration options.
|
|
6
6
|
*
|
|
@@ -46,5 +46,4 @@ const ConfigOptionsSchema = Schema.Struct({
|
|
|
46
46
|
*/
|
|
47
47
|
const decodeConfigOptions = Schema.decodeUnknownSync(ConfigOptionsSchema);
|
|
48
48
|
|
|
49
|
-
//#endregion
|
|
50
49
|
export { ConfigOptionsSchema, ReleaseFormatSchema, decodeConfigOptions };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/detection/dco.ts
|
|
5
5
|
/**
|
|
6
6
|
* DCO (Developer Certificate of Origin) detection module.
|
|
7
7
|
*
|
|
@@ -50,5 +50,4 @@ function detectDCO(cwd = process.cwd()) {
|
|
|
50
50
|
return existsSync(join(searchDir, DCO_FILENAME));
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
//#endregion
|
|
54
53
|
export { detectDCO };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { WorkspaceDiscovery } from "@effected/workspaces";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/detection/scopes.ts
|
|
5
5
|
/**
|
|
6
6
|
* Extract scope-friendly name from a package name.
|
|
7
7
|
*
|
|
@@ -36,5 +36,4 @@ const detectScopes = Effect.gen(function* () {
|
|
|
36
36
|
return scopes.sort();
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
//#endregion
|
|
40
39
|
export { detectScopes };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getExplanation, getSuggestion } from "./messages.js";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/formatter/format.ts
|
|
4
4
|
/**
|
|
5
5
|
* Custom formatter implementation for commitlint.
|
|
6
6
|
*
|
|
@@ -81,5 +81,4 @@ function format(formatterResult) {
|
|
|
81
81
|
return output.join("\n");
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
//#endregion
|
|
85
84
|
export { format };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/commitlint/formatter/messages.ts
|
|
2
2
|
/**
|
|
3
3
|
* Detailed error explanations for common rule failures.
|
|
4
4
|
*
|
|
@@ -70,5 +70,4 @@ function getSuggestion(ruleName) {
|
|
|
70
70
|
return ERROR_SUGGESTIONS[ruleName];
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
//#endregion
|
|
74
73
|
export { ERROR_EXPLANATIONS, ERROR_SUGGESTIONS, getExplanation, getSuggestion };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, Option } from "effect";
|
|
2
2
|
import { Git } from "@effected/git";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/hook/diagnostics/branch.ts
|
|
5
5
|
/**
|
|
6
6
|
* Branch and inferred-ticket detection.
|
|
7
7
|
*
|
|
@@ -32,5 +32,4 @@ function readBranchInfo() {
|
|
|
32
32
|
})));
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
//#endregion
|
|
36
35
|
export { inferTicketId, readBranchInfo };
|
|
@@ -2,7 +2,7 @@ import { Effect } from "effect";
|
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/commitlint/hook/diagnostics/cache.ts
|
|
6
6
|
/**
|
|
7
7
|
* JSON file cache with TTL. Writes are atomic-ish (mkdir -p, write,
|
|
8
8
|
* rename). Reads return null on any error or staleness — callers
|
|
@@ -33,5 +33,4 @@ function writeCache(path, data, when = /* @__PURE__ */ new Date()) {
|
|
|
33
33
|
}).pipe(Effect.orElseSucceed(() => void 0));
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
//#endregion
|
|
37
36
|
export { readCache, writeCache };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isAbsolute, join, resolve } from "node:path";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/hook/diagnostics/commitlint-config.ts
|
|
5
5
|
/**
|
|
6
6
|
* Resolve the commitlint config path used by the husky commit-msg hook.
|
|
7
7
|
*
|
|
@@ -32,5 +32,4 @@ async function readCommitlintConfigPath(root) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
//#endregion
|
|
36
35
|
export { parseHuskyConfigPath, readCommitlintConfigPath };
|
|
@@ -4,7 +4,7 @@ import { resolve } from "node:path";
|
|
|
4
4
|
import { Git } from "@effected/git";
|
|
5
5
|
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/commitlint/hook/diagnostics/open-issues.ts
|
|
8
8
|
/**
|
|
9
9
|
* Open-issue lookup via gh CLI, cached on disk.
|
|
10
10
|
*
|
|
@@ -78,5 +78,4 @@ function readOrFetchOpenIssues(cachePath) {
|
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
//#endregion
|
|
82
81
|
export { ISSUES_CACHE_RELATIVE_PATH, fetchAndCacheOpenIssues, readOpenIssuesFromCache, readOrFetchOpenIssues, resolveIssuesCachePath };
|
|
@@ -2,7 +2,7 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/commitlint/hook/diagnostics/package-manager.ts
|
|
6
6
|
/**
|
|
7
7
|
* Package manager detection for the commit-time hooks.
|
|
8
8
|
*
|
|
@@ -59,5 +59,4 @@ async function detectPackageManager(root) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
//#endregion
|
|
63
62
|
export { detectFromLockfiles, detectPackageManager, parsePackageManagerField };
|
|
@@ -3,7 +3,7 @@ import { Git } from "@effected/git";
|
|
|
3
3
|
import { stat } from "node:fs/promises";
|
|
4
4
|
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/commitlint/hook/diagnostics/signing.ts
|
|
7
7
|
/**
|
|
8
8
|
* GPG / SSH signing diagnostic.
|
|
9
9
|
*
|
|
@@ -98,5 +98,4 @@ function readSigningDiagnostic() {
|
|
|
98
98
|
}).pipe(Effect.orElseSucceed(() => FALLBACK_DIAGNOSTIC));
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
//#endregion
|
|
102
101
|
export { buildSigningDiagnostic, parseGpgKeyExpiry, readSigningDiagnostic };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/envelope.ts
|
|
4
4
|
/**
|
|
5
5
|
* Schemas for the JSON stdin envelopes Claude passes to plugin hooks.
|
|
6
6
|
*
|
|
@@ -32,5 +32,4 @@ const SessionStartEnvelope = Schema.Struct({
|
|
|
32
32
|
source: Schema.optional(Schema.String)
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
//#endregion
|
|
36
35
|
export { PostToolUseEnvelope, PreToolUseEnvelope, SessionStartEnvelope };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/commitlint/hook/output.ts
|
|
2
2
|
function preToolUseAllow(reason) {
|
|
3
3
|
return { hookSpecificOutput: {
|
|
4
4
|
hookEventName: "PreToolUse",
|
|
@@ -35,5 +35,4 @@ function postToolUseAdvise(message) {
|
|
|
35
35
|
} };
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
//#endregion
|
|
39
38
|
export { postToolUseAdvise, preToolUseAdvise, preToolUseAllow, preToolUseDeny, preToolUseSilent, sessionStartContext };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parse } from "shell-quote";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/parse-bash-command.ts
|
|
4
4
|
/**
|
|
5
5
|
* Parse a Bash command string to extract the commit message and flags
|
|
6
6
|
* for `git commit` / `gh pr create` / `gh pr edit` invocations.
|
|
@@ -101,5 +101,4 @@ function extractFlagValue(tokens, ...names) {
|
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
//#endregion
|
|
105
104
|
export { parseBashCommand };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { parseClosingLists } from "@effected/github-references";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/hook/rules/closes-trailer.ts
|
|
5
5
|
/**
|
|
6
6
|
* closes-trailer rule — advises when the branch encodes a ticket id but
|
|
7
7
|
* the message body has no Closes/Fixes/Resolves trailer for it.
|
|
@@ -43,5 +43,4 @@ const closesTrailerRule = {
|
|
|
43
43
|
})
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
//#endregion
|
|
47
46
|
export { closesTrailerRule, hasClosingTrailer };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/rules/forbidden-content.ts
|
|
4
4
|
/**
|
|
5
5
|
* forbidden-content rule — denies markdown headers and code fences in
|
|
6
6
|
* commit message bodies.
|
|
@@ -28,5 +28,4 @@ const forbiddenContentRule = {
|
|
|
28
28
|
})
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
//#endregion
|
|
32
31
|
export { forbiddenContentRule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/rules/plan-leakage.ts
|
|
4
4
|
/**
|
|
5
5
|
* plan-leakage rule — advises when commit bodies reference plan files
|
|
6
6
|
* (`.claude/plans/`, `.claude/design/`, or the `okf/` knowledge bundle)
|
|
@@ -37,5 +37,4 @@ const planLeakageRule = {
|
|
|
37
37
|
})
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
//#endregion
|
|
41
40
|
export { planLeakageRule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/rules/signing-flag-conflict.ts
|
|
4
4
|
/**
|
|
5
5
|
* signing-flag-conflict rule — denies when the command explicitly opts out
|
|
6
6
|
* of signing while the project is configured to require signing.
|
|
@@ -21,5 +21,4 @@ const signingFlagConflictRule = {
|
|
|
21
21
|
})
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
//#endregion
|
|
25
24
|
export { signingFlagConflictRule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/rules/soft-wrap.ts
|
|
4
4
|
/**
|
|
5
5
|
* soft-wrap rule — advises when a bullet point appears to have an
|
|
6
6
|
* artificial mid-bullet line wrap.
|
|
@@ -33,5 +33,4 @@ const softWrapRule = {
|
|
|
33
33
|
})
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
//#endregion
|
|
37
36
|
export { softWrapRule };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/commitlint/hook/rules/types.ts
|
|
2
2
|
function partitionHits(hits) {
|
|
3
3
|
const deny = [];
|
|
4
4
|
const advise = [];
|
|
@@ -10,5 +10,4 @@ function partitionHits(hits) {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
//#endregion
|
|
14
13
|
export { partitionHits };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/rules/verbosity.ts
|
|
4
4
|
/**
|
|
5
5
|
* verbosity rule — advises when the body exceeds line or word thresholds.
|
|
6
6
|
*
|
|
@@ -45,5 +45,4 @@ const verbosityRule = {
|
|
|
45
45
|
})
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
//#endregion
|
|
49
48
|
export { verbosityRule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Layer, Logger, References } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/commitlint/hook/silence-logger.ts
|
|
4
4
|
/**
|
|
5
5
|
* Logger configuration shared by all hook subcommands.
|
|
6
6
|
*
|
|
@@ -37,5 +37,4 @@ const MinLogLevel = Layer.succeed(References.MinimumLogLevel, "Warn");
|
|
|
37
37
|
*/
|
|
38
38
|
const HookSilencer = Layer.merge(StderrLogger, MinLogLevel);
|
|
39
39
|
|
|
40
|
-
//#endregion
|
|
41
40
|
export { HookSilencer };
|
package/commitlint/index.js
CHANGED
|
@@ -28,7 +28,7 @@ import { softWrapRule } from "./hook/rules/soft-wrap.js";
|
|
|
28
28
|
import { partitionHits } from "./hook/rules/types.js";
|
|
29
29
|
import { verbosityRule } from "./hook/rules/verbosity.js";
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
// src/commitlint/index.ts
|
|
32
32
|
/**
|
|
33
33
|
* Commitlint namespace — commitlint business logic extracted from \@savvy-web/commitlint.
|
|
34
34
|
*
|
|
@@ -141,5 +141,4 @@ var CommitlintConfig = class {
|
|
|
141
141
|
constructor() {}
|
|
142
142
|
};
|
|
143
143
|
|
|
144
|
-
//#endregion
|
|
145
144
|
export { COMMIT_TYPES, COMMIT_TYPE_DEFINITIONS, CommitlintConfig, CommitlintConfig as default, DCO_SIGNOFF_TEXT, ERROR_EXPLANATIONS, ERROR_SUGGESTIONS, HookSilencer, ISSUES_CACHE_RELATIVE_PATH, PostToolUseEnvelope, PreToolUseEnvelope, SessionStartEnvelope, TDD_SCOPE_PATTERN, TDD_STATES, TYPE_EMOJIS, TYPE_EMOJIS_UNICODE, buildSigningDiagnostic, closesTrailerRule, commitlint_exports, createPromptConfig, createTypeEnum, defaultPromptConfig, detectDCO, detectFromLockfiles, detectPackageManager, detectScopes, emojiPromptConfig, fetchAndCacheOpenIssues, forbiddenContentRule, format, getExplanation, getSuggestion, getTypeEmoji, hasClosingTrailer, inferTicketId, parseBashCommand, parseGpgKeyExpiry, parseHuskyConfigPath, parsePackageManagerField, partitionHits, planLeakageRule, postToolUseAdvise, preToolUseAdvise, preToolUseAllow, preToolUseDeny, preToolUseSilent, prompter, readBranchInfo, readCache, readCommitlintConfigPath, readOpenIssuesFromCache, readOrFetchOpenIssues, readSigningDiagnostic, resolveIssuesCachePath, sessionStartContext, signingFlagConflictRule, softWrapRule, staticConfig, verbosityRule, writeCache };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { COMMIT_TYPE_DEFINITIONS } from "../config/rules.js";
|
|
2
2
|
import { TYPE_EMOJIS } from "./emojis.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/prompt/config.ts
|
|
5
5
|
/**
|
|
6
6
|
* Create type enum configuration for prompts.
|
|
7
7
|
*
|
|
@@ -87,5 +87,4 @@ const defaultPromptConfig = createPromptConfig();
|
|
|
87
87
|
*/
|
|
88
88
|
const emojiPromptConfig = createPromptConfig({ emojis: true });
|
|
89
89
|
|
|
90
|
-
//#endregion
|
|
91
90
|
export { createPromptConfig, createTypeEnum, defaultPromptConfig, emojiPromptConfig };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/commitlint/prompt/emojis.ts
|
|
2
2
|
/**
|
|
3
3
|
* Emoji shortcode mapping for commit types.
|
|
4
4
|
*
|
|
@@ -70,5 +70,4 @@ function getTypeEmoji(type, unicode = false) {
|
|
|
70
70
|
return unicode ? TYPE_EMOJIS_UNICODE[type] : TYPE_EMOJIS[type];
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
//#endregion
|
|
74
73
|
export { TYPE_EMOJIS, TYPE_EMOJIS_UNICODE, getTypeEmoji };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { COMMIT_TYPE_DEFINITIONS } from "../config/rules.js";
|
|
2
2
|
import { TYPE_EMOJIS_UNICODE } from "./emojis.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/prompt/prompter.ts
|
|
5
5
|
/** Default prompter options */
|
|
6
6
|
const DEFAULT_OPTIONS = {
|
|
7
7
|
emojis: true,
|
|
@@ -131,5 +131,4 @@ function prompter(cz, commit, options = {}) {
|
|
|
131
131
|
}).catch(() => {});
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
//#endregion
|
|
135
134
|
export { prompter };
|
package/commitlint/static.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { COMMIT_TYPES, COMMIT_TYPE_DEFINITIONS, DCO_SIGNOFF_TEXT, TDD_SCOPE_PATTERN, TDD_STATES } from "./config/rules.js";
|
|
2
2
|
import { silkPlugin } from "./config/plugins.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/commitlint/static.ts
|
|
5
5
|
/**
|
|
6
6
|
* Static commitlint configuration (no auto-detection).
|
|
7
7
|
*
|
|
@@ -69,5 +69,4 @@ const staticConfig = {
|
|
|
69
69
|
} }
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
//#endregion
|
|
73
72
|
export { staticConfig as default };
|