@grove-dev/core 0.14.0 → 0.16.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/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  export type { AuditResult, BudgetConfig, BudgetViolation, LighthouseMetrics, LighthouseScores, PageManifestEntry, PageType, Profile, } from './audit.js';
11
11
  export { DEFAULT_BUDGET, evaluateBudget, } from './audit.js';
12
12
  export type { AwesomeReadmeCategory, AwesomeReadmeInput, AwesomeReadmeOptions, AwesomeReadmeRecord, AwesomeReadmeSections, ReadmeEntryLinkTarget, } from './awesome-readme.js';
13
- export { AWESOME_README_END, AWESOME_README_START, assertReadmeLinkConfig, buildAwesomeReadme, injectAwesomeReadmeBlock, parseAwesomeReadmeSections, recordDetailUrl, } from './awesome-readme.js';
13
+ export { AWESOME_README_END, AWESOME_README_START, assertReadmeLinkConfig, buildAwesomeReadme, injectAwesomeReadmeBlock, parseAwesomeReadmeSections, recordDetailUrl, toAwesomeReadmeRecord, } from './awesome-readme.js';
14
14
  export type { GenerateResult, RecordsFullPayload, RecordsIndexPayload } from './build-data.js';
15
15
  export { generate } from './build-data.js';
16
16
  export type { CandidateEntry, CandidateLink, CandidateSource, ExtractCandidatesOptions, } from './candidate.js';
@@ -23,8 +23,8 @@ export { CollectionFileError, loadCollections, parseCollectionFile } from './col
23
23
  export type { CollectionResult } from './collector.js';
24
24
  export { runCollection } from './collector.js';
25
25
  export { defineConfig, loadConfig } from './config.js';
26
- export type { ExtractTocOptions, ReadContentFileResult, ReadingMetrics, ReadingMetricsOptions, TocEntry, } from './content-body.js';
27
- export { extractToc, headingSlug, readContentFile, readingMetrics, resolveContentPath, shiftHeadings, stripFrontmatter, stripLeadingH1, } from './content-body.js';
26
+ export type { ExtractTocOptions, ReadContentFileResult, ReadingMetrics, ReadingMetricsOptions, SplitFrontmatterResult, TocEntry, } from './content-body.js';
27
+ export { extractToc, headingSlug, readContentFile, readingMetrics, resolveContentPath, shiftHeadings, splitFrontmatter, stripFrontmatter, stripLeadingH1, } from './content-body.js';
28
28
  export type { Contributor, ContributorSyncResult, SyncContributorsOptions, } from './contributors.js';
29
29
  export { syncContributors } from './contributors.js';
30
30
  export type { CleanupCandidate, CleanupReport } from './decisions.js';
@@ -59,6 +59,8 @@ export type { LlmsInput, LlmsRecordInput, LlmsResult } from './llms.js';
59
59
  export { buildLlmsFiles, buildLlmsFullTxt, buildLlmsTxt } from './llms.js';
60
60
  export type { ImportedRecord, ImportResult, ImportSummary, } from './markdown.js';
61
61
  export { detectGithubRepo, parseAwesomeMarkdown, } from './markdown.js';
62
+ export type { NormalizedRecord, NormalizedRecords, RecordEntry, RecordFormat, RecordHealthSource, RecordIssue, RecordSource, RecordSources, } from './normalize-records.js';
63
+ export { applyDecisionVisibility, loadNormalizedRecords, readRecordSources, } from './normalize-records.js';
62
64
  export type { OgBuildInput, OgBuildResult, OgTemplate } from './og-image.js';
63
65
  export { buildOgImages, renderOgPng } from './og-image.js';
64
66
  export type { CollectionInput, ContentInput, Crumb, DocumentPageType, FaqInput, JsonLdNode, JsonLdValidationIssue, LinkedDocument, OpenGraphMetadata, PageDiscovery, PageDocument, PageIdentity, PageMetadata, RecordInput, SiteInput, TwitterMetadata, } from './page-document.js';
@@ -75,7 +77,7 @@ export { classifyRepositoryHealth } from './repository-health.js';
75
77
  export { buildRobotsTxt, isIndexableFilterPath } from './robots.js';
76
78
  export { directoryRoute } from './routes.js';
77
79
  export type { AppLabel, Blueprint, Decision, DecisionsFile, DecisionVisibility, EntityRecord, EntityType, GithubIntegrationFlags, GithubMetadata, GithubRepository, GroveConfig, GroveConfigInput, HealthEntry, HealthFile, HealthStatus, HealthTier, IndexEntityRecord, IndexProjectRecord, IndexRecord, IndexResourceRecord, Links, Override, OverridesFile, ProjectRecord, ProjectType, ReadmeConfig, Relation, RelationType, Resource, ResourceKind, ResourceRecord, ResourceType, Score, Subject, } from './schema.js';
78
- export { appLabelSchema, auditSchema, blueprintKind, blueprintSchema, decisionSchema, decisionsFileSchema, entityRecordSchema, entityTypeSchema, githubLicenseSchema, githubMetadataSchema, githubRepositorySchema, healthBlockSchema, healthEntrySchema, healthFileSchema, healthStatusSchema, healthTierSchema, linksSchema, normalizeGithubIntegration, overrideSchema, overridesFileSchema, projectRecordSchema, projectTypeSchema, readmeConfigSchema, recordsFileSchema, relationEvidenceSchema, relationSchema, relationTypeSchema, resourceKindSchema, resourceRecordSchema, resourceSchema, resourceTypeSchema, scoreSchema, stringifyRecordYaml, subjectSchema, } from './schema.js';
80
+ export { appLabelSchema, auditSchema, blueprintKind, blueprintSchema, decisionSchema, decisionsFileSchema, entityRecordSchema, entityTypeSchema, githubLicenseSchema, githubMetadataSchema, githubRepositorySchema, healthBlockSchema, healthEntrySchema, healthFileSchema, healthStatusSchema, healthTierSchema, linksSchema, normalizeGithubIntegration, overrideSchema, overridesFileSchema, projectRecordSchema, projectTypeSchema, readmeConfigSchema, recordsFileSchema, recordVisibility, relationEvidenceSchema, relationSchema, relationTypeSchema, resourceKindSchema, resourceRecordSchema, resourceSchema, resourceTypeSchema, scoreSchema, stringifyRecordYaml, subjectSchema, } from './schema.js';
79
81
  export type { SiteArtifactStats, SiteArtifactsResult, } from './site-artifacts.js';
80
82
  export { buildOgImageSvg, buildSiteArtifacts } from './site-artifacts.js';
81
83
  export { buildSitemap, buildSitemapXml } from './sitemap.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ export { DEFAULT_BUDGET, evaluateBudget, } from './audit.js';
14
14
  // same record stream used by llms.txt. The output is wrapped between
15
15
  // `<!-- grove-readme:start -->` / `<!-- grove-readme:end -->` sentinels
16
16
  // so hand-written intro/contributing sections survive regenerations.
17
- export { AWESOME_README_END, AWESOME_README_START, assertReadmeLinkConfig, buildAwesomeReadme, injectAwesomeReadmeBlock, parseAwesomeReadmeSections, recordDetailUrl, } from './awesome-readme.js';
17
+ export { AWESOME_README_END, AWESOME_README_START, assertReadmeLinkConfig, buildAwesomeReadme, injectAwesomeReadmeBlock, parseAwesomeReadmeSections, recordDetailUrl, toAwesomeReadmeRecord, } from './awesome-readme.js';
18
18
  // ── Build pipeline ───────────────────────────────────────────────────
19
19
  export { generate } from './build-data.js';
20
20
  // ── Candidate extraction (AST-based, source-preserving) ──────────────
@@ -33,7 +33,7 @@ export { defineConfig, loadConfig } from './config.js';
33
33
  // accompanies each record. No I/O of their own beyond `node:fs` for
34
34
  // the optional `readContentFile`; safe to import from server-only
35
35
  // contexts (Astro `getStaticPaths`, build scripts).
36
- export { extractToc, headingSlug, readContentFile, readingMetrics, resolveContentPath, shiftHeadings, stripFrontmatter, stripLeadingH1, } from './content-body.js';
36
+ export { extractToc, headingSlug, readContentFile, readingMetrics, resolveContentPath, shiftHeadings, splitFrontmatter, stripFrontmatter, stripLeadingH1, } from './content-body.js';
37
37
  // ── Contributor aggregation ───────────────────────────────────────────
38
38
  export { syncContributors } from './contributors.js';
39
39
  // ── Cleanup ──────────────────────────────────────────────────────────
@@ -85,6 +85,10 @@ export { readYamlFile, writeTextFile, writeYamlFile } from './io.js';
85
85
  export { buildLlmsFiles, buildLlmsFullTxt, buildLlmsTxt } from './llms.js';
86
86
  // ── Importers / parsers ──────────────────────────────────────────────
87
87
  export { detectGithubRepo, parseAwesomeMarkdown, } from './markdown.js';
88
+ // ── Record normalizer ────────────────────────────────────────────────
89
+ // The one reader of the record layers (source, GitHub cache, overrides,
90
+ // health.yml, decisions). Build, check, cleanup and README all use it.
91
+ export { applyDecisionVisibility, loadNormalizedRecords, readRecordSources, } from './normalize-records.js';
88
92
  export { buildOgImages, renderOgPng } from './og-image.js';
89
93
  // ── PageDocument: unified page-level contract + JSON-LD registry ────
90
94
  // Every page in a Grove project declares a `PageDocument` and the
@@ -103,7 +107,7 @@ export { classifyRepositoryHealth } from './repository-health.js';
103
107
  export { buildRobotsTxt, isIndexableFilterPath } from './robots.js';
104
108
  export { directoryRoute } from './routes.js';
105
109
  // ── Record YAML helpers (used by `grove import` and the generator) ──
106
- export { appLabelSchema, auditSchema, blueprintKind, blueprintSchema, decisionSchema, decisionsFileSchema, entityRecordSchema, entityTypeSchema, githubLicenseSchema, githubMetadataSchema, githubRepositorySchema, healthBlockSchema, healthEntrySchema, healthFileSchema, healthStatusSchema, healthTierSchema, linksSchema, normalizeGithubIntegration, overrideSchema, overridesFileSchema, projectRecordSchema, projectTypeSchema, readmeConfigSchema, recordsFileSchema, relationEvidenceSchema, relationSchema, relationTypeSchema, resourceKindSchema, resourceRecordSchema, resourceSchema, resourceTypeSchema, scoreSchema, stringifyRecordYaml, subjectSchema, } from './schema.js';
110
+ export { appLabelSchema, auditSchema, blueprintKind, blueprintSchema, decisionSchema, decisionsFileSchema, entityRecordSchema, entityTypeSchema, githubLicenseSchema, githubMetadataSchema, githubRepositorySchema, healthBlockSchema, healthEntrySchema, healthFileSchema, healthStatusSchema, healthTierSchema, linksSchema, normalizeGithubIntegration, overrideSchema, overridesFileSchema, projectRecordSchema, projectTypeSchema, readmeConfigSchema, recordsFileSchema, recordVisibility, relationEvidenceSchema, relationSchema, relationTypeSchema, resourceKindSchema, resourceRecordSchema, resourceSchema, resourceTypeSchema, scoreSchema, stringifyRecordYaml, subjectSchema, } from './schema.js';
107
111
  // ── Config-driven public artifacts ──────────────────────────────────
108
112
  export { buildOgImageSvg, buildSiteArtifacts } from './site-artifacts.js';
109
113
  // ── Sitemap ──────────────────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * The record normalizer: the one place that turns the three record
3
+ * layers into the record every output is built from.
4
+ *
5
+ * 1. Human source — a record file (see "Formats" below), patched by
6
+ * `paths.overrides`.
7
+ * 2. Generated cache — `paths.githubCache/<slug>.json` (GitHub
8
+ * metadata and health, written by
9
+ * `grove sync github`), with a legacy inline
10
+ * `github` / `health` block and `paths.health`
11
+ * as fallbacks. Health from a stale sync resolves
12
+ * as `status: unknown` (`sync.github.maxAgeDays`).
13
+ * 3. Decisions — `paths.decisions`, which has the final say on
14
+ * visibility.
15
+ *
16
+ * Formats — all supported permanently, and mixable within one site:
17
+ *
18
+ * - YAML only: `paths.recordsDir/<slug>.yml`, for data-only sites.
19
+ * - YAML + pointer: the same file with `content: ./…/<slug>.md`
20
+ * pointing at a Markdown body. `records.deprecateContentPointer`
21
+ * opts in to a `record_format_deprecated` warning for these.
22
+ * - Markdown: `paths.bodiesDir/<slug>.md`, YAML frontmatter (at least
23
+ * `name`, or `title` on a resource hub) plus the review body. A `.md`
24
+ * file a YAML record points at through `content:` is that record's
25
+ * body, never a record of its own.
26
+ *
27
+ * `generate()` (browse, collections, SEO, sitemap, llms), `grove check`,
28
+ * `grove cleanup` and `grove readme generate` all read records through
29
+ * {@link loadNormalizedRecords}, so they cannot disagree about a
30
+ * record's fields or whether it is visible.
31
+ */
32
+ import { type GithubCache, type GithubFieldSource } from './github-cache.js';
33
+ import { type DecisionVisibility, type GroveConfig, type Resource } from './schema.js';
34
+ /**
35
+ * How a record is stored on disk:
36
+ * - `yaml`: `paths.recordsDir/<slug>.yml` with no body;
37
+ * - `yaml+content`: the same, with a `content:` pointer to a Markdown body;
38
+ * - `markdown`: `paths.bodiesDir/<slug>.md`, frontmatter plus body.
39
+ */
40
+ export type RecordFormat = 'yaml' | 'yaml+content' | 'markdown';
41
+ /** Where a normalized record's `health` block came from. */
42
+ export type RecordHealthSource =
43
+ /** `paths.githubCache/<slug>.json`. */
44
+ 'cache'
45
+ /** A legacy `health` block written inline on the record. */
46
+ | 'inline'
47
+ /** A `paths.overrides` patch. */
48
+ | 'override'
49
+ /** The record's entry in `paths.health`. */
50
+ | 'file'
51
+ /** Fabricated as "unknown" so a decision has a block to carry its visibility. */
52
+ | 'decision' | 'none';
53
+ /** A problem found while reading or normalizing one record file. */
54
+ export interface RecordIssue {
55
+ code: 'schema_error' | 'zod_error' | 'github_cache_mismatch' | 'duplicate_slug_format' | 'markdown_content_pointer' | 'record_format_deprecated';
56
+ severity: 'error' | 'warning';
57
+ /** Record slug (the file name without its extension). */
58
+ slug: string;
59
+ /** Record file, relative to `cwd`. */
60
+ file: string;
61
+ /** Human-readable message, already prefixed with the slug. */
62
+ message: string;
63
+ }
64
+ /**
65
+ * A record file as read from disk, before any layer is merged: the
66
+ * parsed YAML mapping, or a Markdown record's frontmatter. Also what
67
+ * `grove sync github` iterates over.
68
+ */
69
+ export interface RecordSource {
70
+ slug: string;
71
+ format: RecordFormat;
72
+ /** Absolute path of the record file. */
73
+ path: string;
74
+ /** Record file, relative to `cwd`. */
75
+ file: string;
76
+ /** The YAML mapping or frontmatter; absent when the file failed to parse. */
77
+ data?: Record<string, unknown>;
78
+ /** A Markdown record's body (frontmatter stripped). */
79
+ body?: string;
80
+ /** Read and parse problems with this file. */
81
+ issues: RecordIssue[];
82
+ }
83
+ export interface RecordSources {
84
+ /** Every record file, sorted by file name. */
85
+ sources: RecordSource[];
86
+ }
87
+ export interface NormalizedRecord {
88
+ /** Canonical slug: always the file name without its extension. */
89
+ slug: string;
90
+ /** Record file, relative to `cwd`. */
91
+ file: string;
92
+ format: RecordFormat;
93
+ /**
94
+ * The review body: a Markdown record's own body, or the file a YAML
95
+ * record's `content:` points at, frontmatter stripped. Absent for a
96
+ * data-only record or a pointer that does not resolve.
97
+ */
98
+ body?: string;
99
+ /**
100
+ * The record after every layer: source, GitHub cache (or legacy
101
+ * inline copy), overrides, `paths.health` and decisions. This is
102
+ * what the build serializes and every output renders. For a Markdown
103
+ * record, `content` points at the record's own file, so every
104
+ * renderer that reads `content` finds the body unchanged.
105
+ */
106
+ record: Resource;
107
+ /**
108
+ * The record before `paths.health` and decisions are applied:
109
+ * source + GitHub cache + overrides, schema-parsed, slug from the
110
+ * file name. `grove check` compares this against `paths.health`.
111
+ */
112
+ base: Resource;
113
+ /** Effective visibility: decision, then health, then the record's own field. */
114
+ visibility: DecisionVisibility;
115
+ /**
116
+ * The `slug` value written in the file, which the file name
117
+ * overrides. `undefined` when a Markdown record leaves it out.
118
+ */
119
+ declaredSlug: unknown;
120
+ provenance: {
121
+ github: GithubFieldSource;
122
+ health: RecordHealthSource;
123
+ /** True when `paths.decisions` has an entry for this record. */
124
+ decision: boolean;
125
+ /** True when `paths.overrides` has a patch for this record. */
126
+ override: boolean;
127
+ };
128
+ }
129
+ /** One record file in discovery order, whether or not it normalized. */
130
+ export interface RecordEntry {
131
+ slug: string;
132
+ file: string;
133
+ format: RecordFormat;
134
+ /** Problems with this file; an `error` means `record` is absent. */
135
+ issues: RecordIssue[];
136
+ /**
137
+ * True when the record's cached health came from a stale sync and
138
+ * resolved as `status: unknown` (see `githubSyncFreshness`).
139
+ */
140
+ syncStale: boolean;
141
+ /** Absent when the file failed to parse or validate. */
142
+ record?: NormalizedRecord;
143
+ }
144
+ export interface NormalizedRecords {
145
+ /** Records that normalized, sorted by file name. */
146
+ records: NormalizedRecord[];
147
+ /** Every record file, sorted by file name, with its issues. */
148
+ entries: RecordEntry[];
149
+ /** All issues from `entries`, flattened in the same order. */
150
+ issues: RecordIssue[];
151
+ /** The GitHub sync cache the records were resolved against. */
152
+ githubCache: GithubCache;
153
+ }
154
+ /**
155
+ * Discover and read every record file, in both formats, without merging
156
+ * any layer. A file that cannot be parsed is returned with an issue and
157
+ * no `data`. The same slug in both formats is a `duplicate_slug_format`
158
+ * error on both files: neither silently wins.
159
+ */
160
+ export declare function readRecordSources(config: GroveConfig, cwd?: string): Promise<RecordSources>;
161
+ /**
162
+ * Apply a `paths.decisions` visibility to a record. For project records
163
+ * the decision overwrites `health.visibility`; a project with no health
164
+ * block gets a fabricated "unknown" one from {@link classifyHealth},
165
+ * because list and index payloads read visibility from `health`. For
166
+ * resource-hub and ecosystem-map records (no `health` block) it sets the
167
+ * top-level `visibility`.
168
+ */
169
+ export declare function applyDecisionVisibility(record: Resource, visibility: DecisionVisibility | undefined): Resource;
170
+ /**
171
+ * Discover, parse and merge every record, in either format (see
172
+ * {@link readRecordSources}).
173
+ *
174
+ * Per record, lowest to highest precedence:
175
+ *
176
+ * 1. the record file (YAML, or a Markdown record's frontmatter)
177
+ * 2. the GitHub sync cache, which supplies `github` / `health` over a
178
+ * legacy inline copy ({@link resolveRecordGithub})
179
+ * 3. the `paths.overrides` patch (shallow, top-level fields)
180
+ * 4. schema parse (`recordsFileSchema`); the slug is the file name
181
+ * 5. the `paths.health` entry, for a project record nothing above
182
+ * gave a health block
183
+ * 6. the `paths.decisions` visibility
184
+ *
185
+ * Effective visibility is then decision > health > the record's own
186
+ * `visibility` field ({@link recordVisibility}).
187
+ *
188
+ * Never throws for a bad record: a file that cannot be parsed or fails
189
+ * the schema is reported in `issues` and left out of `records`. Missing
190
+ * or invalid side files are treated as empty; `grove check` reports them.
191
+ */
192
+ export declare function loadNormalizedRecords(config: GroveConfig, cwd?: string): Promise<NormalizedRecords>;
193
+ //# sourceMappingURL=normalize-records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-records.d.ts","sourceRoot":"","sources":["../src/normalize-records.ts"],"names":[],"mappings":"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"}