@grove-dev/core 0.6.1 → 0.8.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.
Files changed (134) hide show
  1. package/README.md +100 -23
  2. package/dist/audit.d.ts +8 -3
  3. package/dist/audit.d.ts.map +1 -1
  4. package/dist/audit.js +29 -8
  5. package/dist/audit.js.map +1 -1
  6. package/dist/awesome-readme.d.ts.map +1 -1
  7. package/dist/awesome-readme.js +31 -31
  8. package/dist/awesome-readme.js.map +1 -1
  9. package/dist/build-data.d.ts +1 -1
  10. package/dist/build-data.d.ts.map +1 -1
  11. package/dist/build-data.js +132 -74
  12. package/dist/build-data.js.map +1 -1
  13. package/dist/collections-io.d.ts +1 -1
  14. package/dist/collections-io.js +8 -8
  15. package/dist/collections-io.js.map +1 -1
  16. package/dist/collections.d.ts +2 -2
  17. package/dist/collections.d.ts.map +1 -1
  18. package/dist/collections.js +8 -9
  19. package/dist/collections.js.map +1 -1
  20. package/dist/collector.d.ts +1 -1
  21. package/dist/collector.d.ts.map +1 -1
  22. package/dist/collector.js +2 -2
  23. package/dist/collector.js.map +1 -1
  24. package/dist/config.d.ts +1 -1
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js +4 -4
  27. package/dist/config.js.map +1 -1
  28. package/dist/content-body.d.ts.map +1 -1
  29. package/dist/content-body.js +22 -22
  30. package/dist/content-body.js.map +1 -1
  31. package/dist/contributors.d.ts.map +1 -1
  32. package/dist/contributors.js +22 -23
  33. package/dist/contributors.js.map +1 -1
  34. package/dist/decisions.d.ts +1 -1
  35. package/dist/decisions.d.ts.map +1 -1
  36. package/dist/decisions.js +18 -20
  37. package/dist/decisions.js.map +1 -1
  38. package/dist/directory-client.d.ts +6 -4
  39. package/dist/directory-client.d.ts.map +1 -1
  40. package/dist/directory-client.js +9 -4
  41. package/dist/directory-client.js.map +1 -1
  42. package/dist/directory-facets.d.ts +1 -1
  43. package/dist/directory-facets.d.ts.map +1 -1
  44. package/dist/directory-facets.js +35 -17
  45. package/dist/directory-facets.js.map +1 -1
  46. package/dist/directory-filter-keys.d.ts +53 -0
  47. package/dist/directory-filter-keys.d.ts.map +1 -0
  48. package/dist/directory-filter-keys.js +66 -0
  49. package/dist/directory-filter-keys.js.map +1 -0
  50. package/dist/directory-format.d.ts.map +1 -1
  51. package/dist/directory-format.js +15 -15
  52. package/dist/directory-format.js.map +1 -1
  53. package/dist/directory-lenses.d.ts +1 -1
  54. package/dist/directory-lenses.d.ts.map +1 -1
  55. package/dist/directory-lenses.js +66 -61
  56. package/dist/directory-lenses.js.map +1 -1
  57. package/dist/directory-repo.js +2 -2
  58. package/dist/directory-scores.d.ts.map +1 -1
  59. package/dist/directory-scores.js +25 -25
  60. package/dist/directory-scores.js.map +1 -1
  61. package/dist/directory-search.d.ts +4 -4
  62. package/dist/directory-search.d.ts.map +1 -1
  63. package/dist/directory-search.js +99 -107
  64. package/dist/directory-search.js.map +1 -1
  65. package/dist/directory-taxonomy.d.ts +1 -1
  66. package/dist/directory-taxonomy.d.ts.map +1 -1
  67. package/dist/directory-taxonomy.js +2 -2
  68. package/dist/directory-taxonomy.js.map +1 -1
  69. package/dist/enrich.d.ts.map +1 -1
  70. package/dist/enrich.js +15 -12
  71. package/dist/enrich.js.map +1 -1
  72. package/dist/github-client.js +6 -6
  73. package/dist/github.d.ts +9 -1
  74. package/dist/github.d.ts.map +1 -1
  75. package/dist/github.js +26 -14
  76. package/dist/github.js.map +1 -1
  77. package/dist/health.d.ts +1 -1
  78. package/dist/health.js +44 -44
  79. package/dist/host.js +2 -2
  80. package/dist/importer.d.ts +2 -2
  81. package/dist/importer.d.ts.map +1 -1
  82. package/dist/importer.js +1 -1
  83. package/dist/importer.js.map +1 -1
  84. package/dist/index.d.ts +66 -63
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +86 -75
  87. package/dist/index.js.map +1 -1
  88. package/dist/io.js +8 -8
  89. package/dist/llms.d.ts +1 -1
  90. package/dist/llms.d.ts.map +1 -1
  91. package/dist/llms.js +69 -65
  92. package/dist/llms.js.map +1 -1
  93. package/dist/markdown.d.ts.map +1 -1
  94. package/dist/markdown.js.map +1 -1
  95. package/dist/og-image.d.ts +8 -8
  96. package/dist/og-image.d.ts.map +1 -1
  97. package/dist/og-image.js +91 -84
  98. package/dist/og-image.js.map +1 -1
  99. package/dist/page-document.d.ts +8 -8
  100. package/dist/page-document.d.ts.map +1 -1
  101. package/dist/page-document.js +48 -54
  102. package/dist/page-document.js.map +1 -1
  103. package/dist/parseReadme.d.ts.map +1 -1
  104. package/dist/parseReadme.js +9 -11
  105. package/dist/parseReadme.js.map +1 -1
  106. package/dist/prepare.d.ts +5 -5
  107. package/dist/prepare.d.ts.map +1 -1
  108. package/dist/prepare.js +46 -35
  109. package/dist/prepare.js.map +1 -1
  110. package/dist/related.d.ts +1 -1
  111. package/dist/schema.d.ts +21 -21
  112. package/dist/schema.d.ts.map +1 -1
  113. package/dist/schema.js +134 -141
  114. package/dist/schema.js.map +1 -1
  115. package/dist/site-artifacts.js +1 -1
  116. package/dist/sitemap.d.ts +2 -2
  117. package/dist/sitemap.d.ts.map +1 -1
  118. package/dist/sitemap.js +39 -39
  119. package/dist/sitemap.js.map +1 -1
  120. package/dist/slug.js +4 -4
  121. package/dist/sync-icons.js +15 -15
  122. package/dist/taxonomy-inference.d.ts +27 -0
  123. package/dist/taxonomy-inference.d.ts.map +1 -0
  124. package/dist/taxonomy-inference.js +38 -0
  125. package/dist/taxonomy-inference.js.map +1 -0
  126. package/dist/validate.d.ts +3 -3
  127. package/dist/validate.d.ts.map +1 -1
  128. package/dist/validate.js +56 -58
  129. package/dist/validate.js.map +1 -1
  130. package/dist/yaml.d.ts +47 -0
  131. package/dist/yaml.d.ts.map +1 -0
  132. package/dist/yaml.js +56 -0
  133. package/dist/yaml.js.map +1 -0
  134. package/package.json +1 -1
package/README.md CHANGED
@@ -1,46 +1,109 @@
1
1
  # `@grove-dev/core`
2
2
 
3
- The framework-free engine behind Grove directories.
3
+ The framework-free engine for Grove. It owns configuration, schemas,
4
+ validation, the data build pipeline, and every maintenance routine
5
+ Grove uses to keep generated outputs in sync with file-backed sources.
4
6
 
5
- Core owns:
7
+ Use it when you need to:
6
8
 
7
- - `grove.config.ts` loading and validation
8
- - project, resource, entity, taxonomy, health, and decision schemas
9
- - YAML validation and normalized generated records
10
- - GitHub repository and contributor metadata
11
- - cleanup reports
12
- - sitemap and `llms.txt` generation
13
- - the unified `prepareDirectory()` pipeline used by Astro and the CLI
9
+ - load and validate a `grove.config.ts`
10
+ - generate normalized JSON datasets, `sitemap.xml`, `robots.txt`,
11
+ `llms.txt`, `llms-full.txt`, and Open Graph images
12
+ - refresh GitHub repository and community metadata
13
+ - classify record health and write the human-review cleanup report
14
+ - build a custom integration on top of the same pipeline Astro uses
14
15
 
15
- ```ts
16
- import { defineConfig, prepareDirectory } from "@grove-dev/core";
16
+ Application-facing code should normally use `@grove-dev/astro`. Direct
17
+ imports from Core are useful for config, tooling, and custom
18
+ integrations.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ pnpm add @grove-dev/core
17
24
  ```
18
25
 
19
- Core contains no UI or framework adapter. Application-facing code should normally use `@grove-dev/astro`; direct Core imports are useful for config, tooling, and custom integrations.
26
+ Requires Node.js `>=22.12.0`.
27
+
28
+ ## Entry points
20
29
 
21
- Browser controllers that need the shared discovery rules should use the browser-safe subpath. It exposes filtering, sorting, facets, display labels, and lens URL helpers without pulling config loading or filesystem dependencies into the client bundle.
30
+ | Import | Purpose |
31
+ | --- | --- |
32
+ | `@grove-dev/core` | Full engine. Config, build pipeline, schemas, generators, maintenance routines. Server and Node only. |
33
+ | `@grove-dev/core/directory` | Browser-safe subpath. Filtering, sorting, facets, display labels, and lens URL helpers without config or filesystem dependencies. |
22
34
 
23
35
  ```ts
36
+ import { defineConfig, prepareDirectory } from "@grove-dev/core";
24
37
  import { filterRecords, hrefForLens } from "@grove-dev/core/directory";
25
38
  ```
26
39
 
27
- ```bash
28
- pnpm --filter @grove-dev/core check
29
- pnpm --filter @grove-dev/core test
40
+ ## What Core owns
41
+
42
+ - **Configuration.** `defineConfig`, `loadConfig`, and `GroveConfig` types.
43
+ - **Schemas.** Resource, entity, taxonomy, decision, override, and health
44
+ records validated with Zod.
45
+ - **Generation.** The unified `prepareDirectory()` pipeline plus
46
+ `buildSitemap`, `buildLlmsTxt` / `buildLlmsFullTxt`,
47
+ `buildSiteArtifacts`, and `buildOgImages`.
48
+ - **Validation.** `validateProject` runs against the loaded config and
49
+ reports issues with severity and code.
50
+ - **Maintenance.** `syncContributors`, GitHub metadata refresh
51
+ (`fetchGithubMetadata`, `buildGithubSyncPatch`), and
52
+ `cleanupStale` / `pickCleanupCandidates`.
53
+ - **Browser helpers.** Re-exports from `./directory-*` modules:
54
+ filtering, sorting, scoring, formatting, facets, lenses, taxonomy,
55
+ and lens-aware search.
56
+
57
+ ## Typical usage
58
+
59
+ ```ts
60
+ import {
61
+ defineConfig,
62
+ loadConfig,
63
+ prepareDirectory,
64
+ validateProject,
65
+ } from "@grove-dev/core";
66
+
67
+ // Define and load configuration
68
+ export default defineConfig({
69
+ site: { /* ... */ },
70
+ sources: { /* ... */ },
71
+ facets: { /* ... */ },
72
+ });
73
+
74
+ const config = await loadConfig();
75
+
76
+ // Validate sources before generating
77
+ const result = await validateProject(config);
78
+ if (!result.ok) {
79
+ for (const issue of result.issues) {
80
+ console.error(`[${issue.severity}] ${issue.code}: ${issue.message}`);
81
+ }
82
+ }
83
+
84
+ // Run the unified generation pipeline
85
+ const prepared = await prepareDirectory();
30
86
  ```
31
87
 
88
+ `prepareDirectory()` is the same routine Astro runs before
89
+ `astro dev`, `astro check`, and `astro build`. Calling it directly is
90
+ the right choice for custom tooling, CI checks, or non-Astro hosts.
91
+
32
92
  ## Audit contract
33
93
 
34
- `@grove-dev/core` defines the page-manifest contract that `grove audit` consumes. An audit block is declared in `grove.config.ts` and lists the pages the CLI will run Lighthouse against.
94
+ Core defines the page-manifest contract that `grove audit` consumes.
95
+ An `audit` block in `grove.config.ts` lists the pages the CLI will run
96
+ Lighthouse against.
35
97
 
36
98
  ### Page types
37
99
 
38
- Every entry in `audit.pages[]` must declare one of seven `PageType` values:
100
+ Every entry in `audit.pages[]` must declare one of seven `PageType`
101
+ values:
39
102
 
40
103
  | Type | Meaning |
41
104
  | --- | --- |
42
105
  | `home` | The site's landing page. |
43
- | `directory` | The searchable/filterable index of records. |
106
+ | `directory` | The searchable, filterable index of records. |
44
107
  | `collection` | A taxonomy or facet landing page. |
45
108
  | `record` | An individual record detail page. |
46
109
  | `content` | A long-form content page (about, blog post, etc.). |
@@ -60,14 +123,19 @@ interface PageManifestEntry {
60
123
 
61
124
  ### Default budget
62
125
 
63
- The audit enforces Lighthouse "good" thresholds — Google's standard quality gate — across every score category and metric:
126
+ The audit enforces Lighthouse "good" thresholds — Google's standard
127
+ quality gate — across every score category and metric:
64
128
 
65
- - **Score categories** (`performance`, `accessibility`, `best-practices`, `seo`) ≥ 0.9
129
+ - **Score categories** (`performance`, `accessibility`,
130
+ `best-practices`, `seo`) ≥ 0.9
66
131
  - **LCP** ≤ 2500 ms
67
132
  - **CLS** ≤ 0.25
68
133
  - **TBT** ≤ 200 ms
69
134
 
70
- The default is 3 runs per page/profile (mobile + desktop) aggregated by median. `grove audit` returns a non-zero exit code on any violation, making it a drop-in CI check. Run with `--runs N` (clamped to `[1, 5]`) to tune the variance/noise trade-off.
135
+ The default is 3 runs per page and profile (mobile + desktop)
136
+ aggregated by median. `grove audit` returns a non-zero exit code on
137
+ any violation, making it a drop-in CI check. Run with `--runs N`
138
+ (clamped to `[1, 5]`) to tune the variance/noise trade-off.
71
139
 
72
140
  ### Minimal example
73
141
 
@@ -88,4 +156,13 @@ export default defineConfig({
88
156
  });
89
157
  ```
90
158
 
91
- MIT
159
+ ## Develop Core
160
+
161
+ ```bash
162
+ pnpm --filter @grove-dev/core check
163
+ pnpm --filter @grove-dev/core test
164
+ ```
165
+
166
+ ## License
167
+
168
+ [MIT](../../LICENSE) © Grove contributors.
package/dist/audit.d.ts CHANGED
@@ -1,9 +1,14 @@
1
- export type PageType = "home" | "directory" | "collection" | "record" | "content" | "empty" | "404";
2
- export type Profile = "mobile" | "desktop";
1
+ export type PageType = 'home' | 'directory' | 'collection' | 'record' | 'content' | 'empty' | '404';
2
+ export type Profile = 'mobile' | 'desktop';
3
3
  export interface PageManifestEntry {
4
4
  path: string;
5
5
  type: PageType;
6
6
  label: string;
7
+ /**
8
+ * @deprecated No-op. Declared since the audit manifest was added but
9
+ * never read by `runAudit` or `parseAuditBlock`. Kept so removing it
10
+ * is not a breaking type change; drop it in the next major.
11
+ */
7
12
  sample?: Record<string, string>;
8
13
  }
9
14
  export interface LighthouseScores {
@@ -33,7 +38,7 @@ export interface BudgetConfig {
33
38
  export interface BudgetViolation {
34
39
  page: PageManifestEntry;
35
40
  profile: Profile;
36
- category: "score" | "metric";
41
+ category: 'score' | 'metric';
37
42
  name: keyof LighthouseScores | keyof LighthouseMetrics;
38
43
  expected: number;
39
44
  actual: number;
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AACpG,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,eAAO,MAAM,cAAc,EAAE,YAG5B,CAAC;AAKF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,iBAAiB,EACvB,MAAM,GAAE,YAA6B,GACpC,eAAe,EAAE,CAuBnB"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AACpG,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD,eAAO,MAAM,cAAc,EAAE,YAG5B,CAAC;AAUF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,iBAAiB,EACvB,MAAM,GAAE,YAA6B,GACpC,eAAe,EAAE,CAqCnB"}
package/dist/audit.js CHANGED
@@ -18,19 +18,26 @@
18
18
  // is real but pre-existing — pinning the budget to the "good"
19
19
  // 0.1 threshold made every CI run red without surfacing anything new.
20
20
  //
21
- // Override per project by exporting `audit.budget` from grove.config.ts
22
- // (the audit CLI parses it the same way it parses `audit.pages`).
21
+ // Not overridable per project: `auditSchema` accepts only `baseUrl` and
22
+ // `pages`, and `parseAuditBlock` reads nothing else off the config. A
23
+ // project that needs a different gate has to read the `--json` report
24
+ // and apply its own thresholds.
23
25
  export const DEFAULT_BUDGET = {
24
26
  scores: { performance: 0.9, accessibility: 0.9, bestPractices: 0.9, seo: 0.9 },
25
27
  metrics: { lcp: 2500, cls: 0.25, tbt: 200 },
26
28
  };
27
- const SCORE_KEYS = ["performance", "accessibility", "bestPractices", "seo"];
28
- const METRIC_KEYS = ["lcp", "cls", "tbt"];
29
+ const SCORE_KEYS = [
30
+ 'performance',
31
+ 'accessibility',
32
+ 'bestPractices',
33
+ 'seo',
34
+ ];
35
+ const METRIC_KEYS = ['lcp', 'cls', 'tbt'];
29
36
  export function evaluateBudget(result, page, budget = DEFAULT_BUDGET) {
30
37
  // Lighthouse cannot meaningfully measure 404 responses — all scores come
31
38
  // back as 0 and all metrics as Infinity. The audit still runs the page
32
39
  // for completeness, but the 100×4 budget does not apply.
33
- if (page.type === "404")
40
+ if (page.type === '404')
34
41
  return [];
35
42
  const violations = [];
36
43
  for (const key of SCORE_KEYS) {
@@ -38,15 +45,29 @@ export function evaluateBudget(result, page, budget = DEFAULT_BUDGET) {
38
45
  // Lighthouse's SEO category fails its is-crawlable audit on any
39
46
  // noindex page — so the SEO score can never reach 1 there. The
40
47
  // other three categories still apply in full.
41
- if (key === "seo" && page.type === "empty")
48
+ if (key === 'seo' && page.type === 'empty')
42
49
  continue;
43
50
  if (result.scores[key] < budget.scores[key]) {
44
- violations.push({ page, profile: result.profile, category: "score", name: key, expected: budget.scores[key], actual: result.scores[key] });
51
+ violations.push({
52
+ page,
53
+ profile: result.profile,
54
+ category: 'score',
55
+ name: key,
56
+ expected: budget.scores[key],
57
+ actual: result.scores[key],
58
+ });
45
59
  }
46
60
  }
47
61
  for (const key of METRIC_KEYS) {
48
62
  if (result.metrics[key] > budget.metrics[key]) {
49
- violations.push({ page, profile: result.profile, category: "metric", name: key, expected: budget.metrics[key], actual: result.metrics[key] });
63
+ violations.push({
64
+ page,
65
+ profile: result.profile,
66
+ category: 'metric',
67
+ name: key,
68
+ expected: budget.metrics[key],
69
+ actual: result.metrics[key],
70
+ });
50
71
  }
51
72
  }
52
73
  return violations;
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AA+CA,sEAAsE;AACtE,qEAAqE;AACrE,cAAc;AACd,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,gEAAgE;AAChE,oEAAoE;AACpE,sEAAsE;AACtE,kEAAkE;AAClE,SAAS;AACT,EAAE;AACF,+CAA+C;AAC/C,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,qEAAqE;AACrE,8DAA8D;AAC9D,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AACxE,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9E,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;CAC5C,CAAC;AAEF,MAAM,UAAU,GAA+B,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACxG,MAAM,WAAW,GAAgC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEvE,MAAM,UAAU,cAAc,CAC5B,MAAmB,EACnB,IAAuB,EACvB,SAAuB,cAAc;IAErC,yEAAyE;IACzE,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,2DAA2D;QAC3D,gEAAgE;QAChE,+DAA+D;QAC/D,8CAA8C;QAC9C,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACrD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7I,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAoDA,sEAAsE;AACtE,qEAAqE;AACrE,cAAc;AACd,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,gEAAgE;AAChE,oEAAoE;AACpE,sEAAsE;AACtE,kEAAkE;AAClE,SAAS;AACT,EAAE;AACF,+CAA+C;AAC/C,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,qEAAqE;AACrE,8DAA8D;AAC9D,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,gCAAgC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9E,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;CAC5C,CAAC;AAEF,MAAM,UAAU,GAA+B;IAC7C,aAAa;IACb,eAAe;IACf,eAAe;IACf,KAAK;CACN,CAAC;AACF,MAAM,WAAW,GAAgC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEvE,MAAM,UAAU,cAAc,CAC5B,MAAmB,EACnB,IAAuB,EACvB,SAAuB,cAAc;IAErC,yEAAyE;IACzE,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,2DAA2D;QAC3D,gEAAgE;QAChE,+DAA+D;QAC/D,8CAA8C;QAC9C,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACrD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"awesome-readme.d.ts","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC3C;AAED,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAClE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AA6D9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAiFpE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAchF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
1
+ {"version":3,"file":"awesome-readme.d.ts","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC3C;AAED,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAClE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AA0D9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CA8EpE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAchF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
@@ -11,25 +11,25 @@
11
11
  * intro, contributing notes, and license section are preserved across
12
12
  * regenerations. When the sentinels are absent, a new block is appended.
13
13
  */
14
- export const AWESOME_README_START = "<!-- grove-readme:start -->";
15
- export const AWESOME_README_END = "<!-- grove-readme:end -->";
14
+ export const AWESOME_README_START = '<!-- grove-readme:start -->';
15
+ export const AWESOME_README_END = '<!-- grove-readme:end -->';
16
16
  const SENTINEL_PATTERN = /<!--\s*grove-readme:start\s*-->[\s\S]*?<!--\s*grove-readme:end\s*-->/;
17
17
  function normalizeDescription(value) {
18
18
  if (!value)
19
- return "";
20
- const collapsed = value.replace(/\s+/g, " ").trim();
21
- const stripped = collapsed.replace(/[.!?…]+\s*$/u, "");
19
+ return '';
20
+ const collapsed = value.replace(/\s+/g, ' ').trim();
21
+ const stripped = collapsed.replace(/[.!?…]+\s*$/u, '');
22
22
  return stripped;
23
23
  }
24
24
  function entryUrl(record) {
25
- return record.homepageUrl ?? record.repoUrl ?? "";
25
+ return record.homepageUrl ?? record.repoUrl ?? '';
26
26
  }
27
27
  function entryLabel(record) {
28
28
  return record.name?.trim() || record.slug.trim();
29
29
  }
30
30
  function sortByName(a, b) {
31
31
  return entryLabel(a).localeCompare(entryLabel(b), undefined, {
32
- sensitivity: "base",
32
+ sensitivity: 'base',
33
33
  });
34
34
  }
35
35
  function categoryDisplayName(id, categories) {
@@ -37,16 +37,16 @@ function categoryDisplayName(id, categories) {
37
37
  if (match)
38
38
  return match.name;
39
39
  return id
40
- .split("-")
41
- .map((part) => (part ? part[0].toUpperCase() + part.slice(1) : ""))
42
- .join(" ");
40
+ .split('-')
41
+ .map((part) => (part ? part[0].toUpperCase() + part.slice(1) : ''))
42
+ .join(' ');
43
43
  }
44
44
  function categoryAnchor(name) {
45
45
  return name
46
46
  .toLowerCase()
47
- .replace(/[^a-z0-9\s-]/g, "")
47
+ .replace(/[^a-z0-9\s-]/g, '')
48
48
  .trim()
49
- .replace(/\s+/g, "-");
49
+ .replace(/\s+/g, '-');
50
50
  }
51
51
  function buildEntryLine(record) {
52
52
  const label = entryLabel(record);
@@ -56,7 +56,7 @@ function buildEntryLine(record) {
56
56
  return desc ? `- ${link} - ${desc}.` : `- ${link}`;
57
57
  }
58
58
  function isVisible(record) {
59
- return record.visibility !== "hide" && record.visibility !== "remove";
59
+ return record.visibility !== 'hide' && record.visibility !== 'remove';
60
60
  }
61
61
  function hasLabel(record) {
62
62
  return Boolean(record.name?.trim() || record.slug?.trim());
@@ -84,7 +84,7 @@ export function buildAwesomeReadme(input) {
84
84
  orderedIds.push(id);
85
85
  const grouped = new Map();
86
86
  for (const record of visible) {
87
- const id = record.category ?? "other";
87
+ const id = record.category ?? 'other';
88
88
  if (!grouped.has(id))
89
89
  grouped.set(id, []);
90
90
  grouped.get(id).push(record);
@@ -94,35 +94,35 @@ export function buildAwesomeReadme(input) {
94
94
  const title = opts.title ?? input.site.name;
95
95
  const tagline = opts.tagline ?? opts.description ?? input.site.tagline ?? input.site.description;
96
96
  const browseUrl = opts.url ?? input.site.url;
97
- const browseLabel = opts.browseLabel ?? "Browse the full directory →";
97
+ const browseLabel = opts.browseLabel ?? 'Browse the full directory →';
98
98
  const lines = [];
99
99
  lines.push(`# ${title}`);
100
- lines.push("");
100
+ lines.push('');
101
101
  if (showBadge) {
102
- lines.push("[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)");
103
- lines.push("");
102
+ lines.push('[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)');
103
+ lines.push('');
104
104
  }
105
105
  if (tagline) {
106
106
  lines.push(tagline);
107
- lines.push("");
107
+ lines.push('');
108
108
  }
109
109
  if (showBrowseLink && browseUrl) {
110
110
  lines.push(`${browseLabel} ${browseUrl}`);
111
- lines.push("");
111
+ lines.push('');
112
112
  }
113
113
  if (opts.intro) {
114
- const introLines = opts.intro.replace(/\n+$/, "").split("\n");
114
+ const introLines = opts.intro.replace(/\n+$/, '').split('\n');
115
115
  lines.push(...introLines);
116
- lines.push("");
116
+ lines.push('');
117
117
  }
118
118
  if (showToc) {
119
- lines.push("## Contents");
120
- lines.push("");
119
+ lines.push('## Contents');
120
+ lines.push('');
121
121
  for (const id of orderedIds) {
122
122
  const name = categoryDisplayName(id, input.categories);
123
123
  lines.push(`- [${name}](#${categoryAnchor(name)})`);
124
124
  }
125
- lines.push("");
125
+ lines.push('');
126
126
  }
127
127
  for (const id of orderedIds) {
128
128
  const name = categoryDisplayName(id, input.categories);
@@ -130,17 +130,17 @@ export function buildAwesomeReadme(input) {
130
130
  if (records.length === 0)
131
131
  continue;
132
132
  lines.push(`## ${name}`);
133
- lines.push("");
133
+ lines.push('');
134
134
  for (const record of records)
135
135
  lines.push(buildEntryLine(record));
136
- lines.push("");
136
+ lines.push('');
137
137
  }
138
- return lines.join("\n").replace(/\n+$/, "\n");
138
+ return lines.join('\n').replace(/\n+$/, '\n');
139
139
  }
140
140
  export function parseAwesomeReadmeSections(readme) {
141
141
  const match = readme.match(SENTINEL_PATTERN);
142
142
  if (!match || match.index === undefined) {
143
- return { before: readme, entries: "", after: "" };
143
+ return { before: readme, entries: '', after: '' };
144
144
  }
145
145
  const start = match.index;
146
146
  const end = match.index + match[0].length;
@@ -153,12 +153,12 @@ export function parseAwesomeReadmeSections(readme) {
153
153
  return { before, entries, after };
154
154
  }
155
155
  export function injectAwesomeReadmeBlock(readme, block) {
156
- const trimmed = block.replace(/\n+$/, "\n");
156
+ const trimmed = block.replace(/\n+$/, '\n');
157
157
  const wrapped = `${AWESOME_README_START}\n${trimmed}${AWESOME_README_END}`;
158
158
  if (SENTINEL_PATTERN.test(readme)) {
159
159
  return readme.replace(SENTINEL_PATTERN, wrapped);
160
160
  }
161
- const trailing = readme.endsWith("\n") ? readme : `${readme}\n`;
161
+ const trailing = readme.endsWith('\n') ? readme : `${readme}\n`;
162
162
  return `${trailing}\n${wrapped}\n`;
163
163
  }
164
164
  //# sourceMappingURL=awesome-readme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"awesome-readme.js","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"awesome-readme.js","sourceRoot":"","sources":["../src/awesome-readme.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type GroveConfig } from "./schema.js";
1
+ import { type GroveConfig } from './schema.js';
2
2
  /**
3
3
  * The full payload written to data/generated/records.full.json.
4
4
  * Carries every normalized record, regardless of visibility.
@@ -1 +1 @@
1
- {"version":3,"file":"build-data.d.ts","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAgErB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAiDD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAC5B,GAAG,SAAgB,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CA+PzB"}
1
+ {"version":3,"file":"build-data.d.ts","sourceRoot":"","sources":["../src/build-data.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,WAAW,EAUjB,MAAM,aAAa,CAAC;AA0GrB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzC;AAiDD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAAC,GAAG,SAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAiQjG"}