@grove-dev/core 0.7.0 → 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 (133) hide show
  1. package/dist/audit.d.ts +3 -3
  2. package/dist/audit.d.ts.map +1 -1
  3. package/dist/audit.js +25 -6
  4. package/dist/audit.js.map +1 -1
  5. package/dist/awesome-readme.d.ts.map +1 -1
  6. package/dist/awesome-readme.js +31 -31
  7. package/dist/awesome-readme.js.map +1 -1
  8. package/dist/build-data.d.ts +1 -1
  9. package/dist/build-data.d.ts.map +1 -1
  10. package/dist/build-data.js +82 -77
  11. package/dist/build-data.js.map +1 -1
  12. package/dist/collections-io.d.ts +1 -1
  13. package/dist/collections-io.js +8 -8
  14. package/dist/collections-io.js.map +1 -1
  15. package/dist/collections.d.ts +2 -2
  16. package/dist/collections.d.ts.map +1 -1
  17. package/dist/collections.js +8 -9
  18. package/dist/collections.js.map +1 -1
  19. package/dist/collector.d.ts +1 -1
  20. package/dist/collector.d.ts.map +1 -1
  21. package/dist/collector.js +2 -2
  22. package/dist/collector.js.map +1 -1
  23. package/dist/config.d.ts +1 -1
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js +4 -4
  26. package/dist/config.js.map +1 -1
  27. package/dist/content-body.d.ts.map +1 -1
  28. package/dist/content-body.js +22 -22
  29. package/dist/content-body.js.map +1 -1
  30. package/dist/contributors.d.ts.map +1 -1
  31. package/dist/contributors.js +22 -23
  32. package/dist/contributors.js.map +1 -1
  33. package/dist/decisions.d.ts +1 -1
  34. package/dist/decisions.d.ts.map +1 -1
  35. package/dist/decisions.js +18 -20
  36. package/dist/decisions.js.map +1 -1
  37. package/dist/directory-client.d.ts +6 -4
  38. package/dist/directory-client.d.ts.map +1 -1
  39. package/dist/directory-client.js +9 -4
  40. package/dist/directory-client.js.map +1 -1
  41. package/dist/directory-facets.d.ts +1 -1
  42. package/dist/directory-facets.d.ts.map +1 -1
  43. package/dist/directory-facets.js +35 -17
  44. package/dist/directory-facets.js.map +1 -1
  45. package/dist/directory-filter-keys.d.ts +53 -0
  46. package/dist/directory-filter-keys.d.ts.map +1 -0
  47. package/dist/directory-filter-keys.js +66 -0
  48. package/dist/directory-filter-keys.js.map +1 -0
  49. package/dist/directory-format.d.ts.map +1 -1
  50. package/dist/directory-format.js +15 -15
  51. package/dist/directory-format.js.map +1 -1
  52. package/dist/directory-lenses.d.ts +1 -1
  53. package/dist/directory-lenses.d.ts.map +1 -1
  54. package/dist/directory-lenses.js +66 -61
  55. package/dist/directory-lenses.js.map +1 -1
  56. package/dist/directory-repo.js +2 -2
  57. package/dist/directory-scores.d.ts.map +1 -1
  58. package/dist/directory-scores.js +25 -25
  59. package/dist/directory-scores.js.map +1 -1
  60. package/dist/directory-search.d.ts +4 -4
  61. package/dist/directory-search.d.ts.map +1 -1
  62. package/dist/directory-search.js +99 -107
  63. package/dist/directory-search.js.map +1 -1
  64. package/dist/directory-taxonomy.d.ts +1 -1
  65. package/dist/directory-taxonomy.d.ts.map +1 -1
  66. package/dist/directory-taxonomy.js +2 -2
  67. package/dist/directory-taxonomy.js.map +1 -1
  68. package/dist/enrich.d.ts.map +1 -1
  69. package/dist/enrich.js +15 -12
  70. package/dist/enrich.js.map +1 -1
  71. package/dist/github-client.js +6 -6
  72. package/dist/github.d.ts +1 -1
  73. package/dist/github.d.ts.map +1 -1
  74. package/dist/github.js +15 -13
  75. package/dist/github.js.map +1 -1
  76. package/dist/health.d.ts +1 -1
  77. package/dist/health.js +44 -44
  78. package/dist/host.js +2 -2
  79. package/dist/importer.d.ts +2 -2
  80. package/dist/importer.d.ts.map +1 -1
  81. package/dist/importer.js +1 -1
  82. package/dist/importer.js.map +1 -1
  83. package/dist/index.d.ts +66 -63
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +86 -75
  86. package/dist/index.js.map +1 -1
  87. package/dist/io.js +8 -8
  88. package/dist/llms.d.ts +1 -1
  89. package/dist/llms.d.ts.map +1 -1
  90. package/dist/llms.js +65 -64
  91. package/dist/llms.js.map +1 -1
  92. package/dist/markdown.d.ts.map +1 -1
  93. package/dist/markdown.js.map +1 -1
  94. package/dist/og-image.d.ts +8 -8
  95. package/dist/og-image.d.ts.map +1 -1
  96. package/dist/og-image.js +91 -84
  97. package/dist/og-image.js.map +1 -1
  98. package/dist/page-document.d.ts +8 -8
  99. package/dist/page-document.d.ts.map +1 -1
  100. package/dist/page-document.js +48 -54
  101. package/dist/page-document.js.map +1 -1
  102. package/dist/parseReadme.d.ts.map +1 -1
  103. package/dist/parseReadme.js +9 -11
  104. package/dist/parseReadme.js.map +1 -1
  105. package/dist/prepare.d.ts +5 -5
  106. package/dist/prepare.d.ts.map +1 -1
  107. package/dist/prepare.js +25 -35
  108. package/dist/prepare.js.map +1 -1
  109. package/dist/related.d.ts +1 -1
  110. package/dist/schema.d.ts +21 -21
  111. package/dist/schema.d.ts.map +1 -1
  112. package/dist/schema.js +130 -141
  113. package/dist/schema.js.map +1 -1
  114. package/dist/site-artifacts.js +1 -1
  115. package/dist/sitemap.d.ts +2 -2
  116. package/dist/sitemap.d.ts.map +1 -1
  117. package/dist/sitemap.js +39 -39
  118. package/dist/sitemap.js.map +1 -1
  119. package/dist/slug.js +4 -4
  120. package/dist/sync-icons.js +15 -15
  121. package/dist/taxonomy-inference.d.ts +27 -0
  122. package/dist/taxonomy-inference.d.ts.map +1 -0
  123. package/dist/taxonomy-inference.js +38 -0
  124. package/dist/taxonomy-inference.js.map +1 -0
  125. package/dist/validate.d.ts +3 -3
  126. package/dist/validate.d.ts.map +1 -1
  127. package/dist/validate.js +56 -58
  128. package/dist/validate.js.map +1 -1
  129. package/dist/yaml.d.ts +47 -0
  130. package/dist/yaml.d.ts.map +1 -0
  131. package/dist/yaml.js +56 -0
  132. package/dist/yaml.js.map +1 -0
  133. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js CHANGED
@@ -1,6 +1,6 @@
1
- import { z } from "zod";
2
- import { parse, stringify } from "yaml";
3
- import { DEFAULT_FACETS, FACET_IDS } from "./directory-facets.js";
1
+ import { parse, stringify } from 'yaml';
2
+ import { z } from 'zod';
3
+ import { DEFAULT_FACETS, FACET_IDS } from './directory-facets.js';
4
4
  // ──────────────────────────────────────────────────────────────────────
5
5
  // Blueprints and kinds
6
6
  // ──────────────────────────────────────────────────────────────────────
@@ -10,91 +10,82 @@ import { DEFAULT_FACETS, FACET_IDS } from "./directory-facets.js";
10
10
  * V1 ships three fixed blueprints. They are not extensible — no custom
11
11
  * blueprint API in V1.
12
12
  */
13
- export const blueprintSchema = z.enum([
14
- "project-directory",
15
- "resource-hub",
16
- "ecosystem-map",
17
- ]);
13
+ export const blueprintSchema = z.enum(['project-directory', 'resource-hub', 'ecosystem-map']);
18
14
  /**
19
15
  * Each blueprint is bound to a single resource kind. Records are
20
16
  * discriminated by `kind`, which must match the blueprint of the site
21
17
  * that owns them.
22
18
  */
23
- export const resourceKindSchema = z.enum(["project", "resource", "entity"]);
19
+ export const resourceKindSchema = z.enum(['project', 'resource', 'entity']);
24
20
  export const blueprintKind = {
25
- "project-directory": "project",
26
- "resource-hub": "resource",
27
- "ecosystem-map": "entity",
21
+ 'project-directory': 'project',
22
+ 'resource-hub': 'resource',
23
+ 'ecosystem-map': 'entity',
28
24
  };
29
25
  // ──────────────────────────────────────────────────────────────────────
30
26
  // Health & decision labels
31
27
  // ──────────────────────────────────────────────────────────────────────
32
28
  export const healthStatusSchema = z.enum([
33
- "active",
34
- "mature",
35
- "stale",
36
- "inactive",
37
- "archived",
38
- "unknown",
39
- "historical",
40
- "needs_review",
41
- "quiet",
42
- "unavailable",
29
+ 'active',
30
+ 'mature',
31
+ 'stale',
32
+ 'inactive',
33
+ 'archived',
34
+ 'unknown',
35
+ 'historical',
36
+ 'needs_review',
37
+ 'quiet',
38
+ 'unavailable',
43
39
  ]);
44
40
  export const decisionVisibilitySchema = z.enum([
45
- "highlight",
46
- "keep",
47
- "needs_review",
48
- "hide",
49
- "remove",
50
- "historical",
51
- ]);
52
- export const healthTierSchema = z.enum([
53
- "curated",
54
- "listed",
55
- "experimental",
56
- "hidden",
41
+ 'highlight',
42
+ 'keep',
43
+ 'needs_review',
44
+ 'hide',
45
+ 'remove',
46
+ 'historical',
57
47
  ]);
48
+ export const healthTierSchema = z.enum(['curated', 'listed', 'experimental', 'hidden']);
58
49
  // ──────────────────────────────────────────────────────────────────────
59
50
  // Curation enums (shared)
60
51
  // ──────────────────────────────────────────────────────────────────────
61
52
  export const projectTypeSchema = z.enum([
62
- "real-app",
63
- "production",
64
- "reference",
65
- "library",
66
- "tool",
67
- "demo",
68
- "template",
69
- "historical",
53
+ 'real-app',
54
+ 'production',
55
+ 'reference',
56
+ 'library',
57
+ 'tool',
58
+ 'demo',
59
+ 'template',
60
+ 'historical',
70
61
  ]);
71
62
  export const resourceTypeSchema = z.enum([
72
- "guide",
73
- "comparison",
74
- "link",
75
- "explainer",
76
- "tool",
77
- "video",
78
- "article",
79
- "course",
80
- "book",
81
- "podcast",
82
- "other",
63
+ 'guide',
64
+ 'comparison',
65
+ 'link',
66
+ 'explainer',
67
+ 'tool',
68
+ 'video',
69
+ 'article',
70
+ 'course',
71
+ 'book',
72
+ 'podcast',
73
+ 'other',
83
74
  ]);
84
75
  export const entityTypeSchema = z.enum([
85
- "company",
86
- "organization",
87
- "community",
88
- "school",
89
- "university",
90
- "research-lab",
91
- "agency",
92
- "service",
93
- "product",
94
- "person",
95
- "other",
76
+ 'company',
77
+ 'organization',
78
+ 'community',
79
+ 'school',
80
+ 'university',
81
+ 'research-lab',
82
+ 'agency',
83
+ 'service',
84
+ 'product',
85
+ 'person',
86
+ 'other',
96
87
  ]);
97
- export const appLabelSchema = z.enum(["new", "hot", "mature", "featured"]);
88
+ export const appLabelSchema = z.enum(['new', 'hot', 'mature', 'featured']);
98
89
  export const scoreSchema = z.object({
99
90
  activity: z.number().min(0).max(100).optional(),
100
91
  maturity: z.number().min(0).max(100).optional(),
@@ -189,20 +180,17 @@ export const githubMetadataSchema = z.object({
189
180
  size: z.number().int().nonnegative().optional(),
190
181
  files: z.record(z.string(), z.boolean()).optional(),
191
182
  monthlyCommits: z
192
- .array(z.union([
193
- z.number(),
194
- z.object({ month: z.string(), commits: z.number() }),
195
- ]))
183
+ .array(z.union([z.number(), z.object({ month: z.string(), commits: z.number() })]))
196
184
  .optional(),
197
185
  });
198
186
  export const healthBlockSchema = z.object({
199
- status: healthStatusSchema.default("unknown"),
200
- maturity: z.enum(["experimental", "useful", "mature", "unknown"]).default("unknown"),
201
- tier: healthTierSchema.default("experimental"),
202
- visibility: decisionVisibilitySchema.default("keep"),
187
+ status: healthStatusSchema.default('unknown'),
188
+ maturity: z.enum(['experimental', 'useful', 'mature', 'unknown']).default('unknown'),
189
+ tier: healthTierSchema.default('experimental'),
190
+ visibility: decisionVisibilitySchema.default('keep'),
203
191
  cleanupCandidate: z.boolean().default(false),
204
192
  staleReason: z.string().nullable().optional(),
205
- confidence: z.enum(["low", "medium", "high"]).default("medium"),
193
+ confidence: z.enum(['low', 'medium', 'high']).default('medium'),
206
194
  reasons: z.array(z.string()).default([]),
207
195
  });
208
196
  export const healthEntrySchema = z.object({
@@ -259,7 +247,7 @@ const curationBlockSchema = z
259
247
  // ──────────────────────────────────────────────────────────────────────
260
248
  const resourceBaseSchema = z.object({
261
249
  slug: z.string().min(1),
262
- description: z.string().default(""),
250
+ description: z.string().default(''),
263
251
  /**
264
252
  * Open Apps-written summary, surfaced as the lead paragraph on the
265
253
  * detail page above the original (GitHub-sourced) description.
@@ -275,21 +263,22 @@ const resourceBaseSchema = z.object({
275
263
  * overwriting what GitHub says the project is.
276
264
  */
277
265
  sourceDescription: z.string().optional(),
278
- category: z.string().min(1).default("uncategorized"),
266
+ category: z.string().min(1).default('uncategorized'),
279
267
  tags: z.array(z.string()).default([]),
280
268
  links: linksSchema,
281
269
  content: z.string().optional(), // path to markdown body under content/records/
282
270
  source: z
283
271
  .object({
284
- type: z.enum(["manual", "github-topic", "awesome-list", "submit", "import"])
285
- .default("manual"),
272
+ type: z
273
+ .enum(['manual', 'github-topic', 'awesome-list', 'submit', 'import'])
274
+ .default('manual'),
286
275
  file: z.string().optional(),
287
276
  url: z.string().optional(),
288
277
  provider: z.string().optional(),
289
278
  owner: z.string().optional(),
290
279
  repo: z.string().optional(),
291
280
  })
292
- .default({ type: "manual" }),
281
+ .default({ type: 'manual' }),
293
282
  curation: curationBlockSchema,
294
283
  scores: scoreSchema.default({}),
295
284
  /**
@@ -300,13 +289,13 @@ const resourceBaseSchema = z.object({
300
289
  * Defaults to "keep" so existing YAML files without the field
301
290
  * continue to validate.
302
291
  */
303
- visibility: decisionVisibilitySchema.default("keep"),
292
+ visibility: decisionVisibilitySchema.default('keep'),
304
293
  });
305
294
  // ──────────────────────────────────────────────────────────────────────
306
295
  // Blueprint: project-directory — kind: project
307
296
  // ──────────────────────────────────────────────────────────────────────
308
297
  export const projectRecordSchema = resourceBaseSchema.extend({
309
- kind: z.literal("project"),
298
+ kind: z.literal('project'),
310
299
  name: z.string().min(1),
311
300
  projectType: projectTypeSchema.optional(),
312
301
  stack: z.string().optional(),
@@ -316,8 +305,8 @@ export const projectRecordSchema = resourceBaseSchema.extend({
316
305
  // authored when a record is curated; otherwise derived from the
317
306
  // GitHub sync's `license.spdx_id` field at build time.
318
307
  licenses: z.array(z.string()).default([]),
319
- difficulty: z.enum(["beginner", "intermediate", "advanced"]).optional(),
320
- codebaseSize: z.enum(["small", "medium", "large", "huge"]).optional(),
308
+ difficulty: z.enum(['beginner', 'intermediate', 'advanced']).optional(),
309
+ codebaseSize: z.enum(['small', 'medium', 'large', 'huge']).optional(),
321
310
  // Canonical repo URL. Distinct from `links.github`, which is the
322
311
  // human-facing link on the page; `repoUrl` is the single source
323
312
  // for owner/repo extraction, avatar fallback, and "view repo" CTAs.
@@ -379,7 +368,7 @@ export const projectRecordSchema = resourceBaseSchema.extend({
379
368
  // Blueprint: resource-hub — kind: resource
380
369
  // ──────────────────────────────────────────────────────────────────────
381
370
  export const resourceRecordSchema = resourceBaseSchema.extend({
382
- kind: z.literal("resource"),
371
+ kind: z.literal('resource'),
383
372
  title: z.string().min(1),
384
373
  type: resourceTypeSchema,
385
374
  topic: z.string().min(1),
@@ -391,7 +380,7 @@ export const resourceRecordSchema = resourceBaseSchema.extend({
391
380
  // Blueprint: ecosystem-map — kind: entity
392
381
  // ──────────────────────────────────────────────────────────────────────
393
382
  export const entityRecordSchema = resourceBaseSchema.extend({
394
- kind: z.literal("entity"),
383
+ kind: z.literal('entity'),
395
384
  name: z.string().min(1),
396
385
  type: entityTypeSchema,
397
386
  founded: z.string().optional(),
@@ -402,7 +391,7 @@ export const entityRecordSchema = resourceBaseSchema.extend({
402
391
  // ──────────────────────────────────────────────────────────────────────
403
392
  // Discriminated union: Resource
404
393
  // ──────────────────────────────────────────────────────────────────────
405
- export const resourceSchema = z.discriminatedUnion("kind", [
394
+ export const resourceSchema = z.discriminatedUnion('kind', [
406
395
  projectRecordSchema,
407
396
  resourceRecordSchema,
408
397
  entityRecordSchema,
@@ -472,7 +461,7 @@ export const githubIntegrationSchema = z.union([
472
461
  * callers (`grove sync`, CI workflows) can gate each feature.
473
462
  */
474
463
  export function normalizeGithubIntegration(value) {
475
- if (typeof value === "boolean") {
464
+ if (typeof value === 'boolean') {
476
465
  return { metadata: value, contributors: value, health: value };
477
466
  }
478
467
  return {
@@ -489,23 +478,23 @@ export const themeSchema = z.object({
489
478
  */
490
479
  primaryColor: z
491
480
  .string()
492
- .regex(/^#[0-9a-fA-F]{3,8}$/, "theme.primaryColor must be a hex color such as #4f46e5")
481
+ .regex(/^#[0-9a-fA-F]{3,8}$/, 'theme.primaryColor must be a hex color such as #4f46e5')
493
482
  .optional(),
494
- radius: z.enum(["none", "soft", "round"]).default("soft"),
495
- density: z.enum(["compact", "comfortable", "spacious"]).default("comfortable"),
496
- containerWidth: z.string().default("72rem"),
483
+ radius: z.enum(['none', 'soft', 'round']).default('soft'),
484
+ density: z.enum(['compact', 'comfortable', 'spacious']).default('comfortable'),
485
+ containerWidth: z.string().default('72rem'),
497
486
  });
498
487
  // ──────────────────────────────────────────────────────────────────────
499
488
  // Audit manifest (consumed by `grove audit`)
500
489
  // ──────────────────────────────────────────────────────────────────────
501
490
  const auditPageTypeSchema = z.enum([
502
- "home",
503
- "directory",
504
- "collection",
505
- "record",
506
- "content",
507
- "empty",
508
- "404",
491
+ 'home',
492
+ 'directory',
493
+ 'collection',
494
+ 'record',
495
+ 'content',
496
+ 'empty',
497
+ '404',
509
498
  ]);
510
499
  const auditPageManifestEntrySchema = z.object({
511
500
  path: z.string().min(1),
@@ -542,10 +531,10 @@ export const readmeConfigSchema = z.object({
542
531
  showBrowseLink: z.boolean().default(true),
543
532
  });
544
533
  export const groveConfigSchema = z.object({
545
- blueprint: blueprintSchema.default("project-directory"),
534
+ blueprint: blueprintSchema.default('project-directory'),
546
535
  site: z.object({
547
536
  name: z.string().min(1),
548
- tagline: z.string().default("A growing community knowledge site."),
537
+ tagline: z.string().default('A growing community knowledge site.'),
549
538
  description: z.string().optional(),
550
539
  url: z.string().url().optional(),
551
540
  repoUrl: z.string().url().optional(),
@@ -565,7 +554,7 @@ export const groveConfigSchema = z.object({
565
554
  * BCP-47 language tag for the published site. Drives `<html lang>`,
566
555
  * `og:locale`, and JSON-LD `inLanguage`.
567
556
  */
568
- locale: z.string().default("en"),
557
+ locale: z.string().default('en'),
569
558
  /**
570
559
  * Twitter/X handle for the site (e.g. `@grove`). Emitted as
571
560
  * `twitter:site` on every page when set.
@@ -576,7 +565,7 @@ export const groveConfigSchema = z.object({
576
565
  .object({
577
566
  googleAnalyticsId: z
578
567
  .string()
579
- .regex(/^G-[A-Z0-9]+$/, "Expected a GA4 measurement ID such as G-XXXXXX")
568
+ .regex(/^G-[A-Z0-9]+$/, 'Expected a GA4 measurement ID such as G-XXXXXX')
580
569
  .optional(),
581
570
  })
582
571
  .default({}),
@@ -622,7 +611,7 @@ export const groveConfigSchema = z.object({
622
611
  facets: z
623
612
  .array(z.enum(FACET_IDS))
624
613
  .refine((facets) => new Set(facets).size === facets.length, {
625
- message: "browse.facets contains duplicate entries",
614
+ message: 'browse.facets contains duplicate entries',
626
615
  })
627
616
  .default([...DEFAULT_FACETS]),
628
617
  })
@@ -638,8 +627,8 @@ export const groveConfigSchema = z.object({
638
627
  .unknown()
639
628
  .optional()
640
629
  .refine((value) => value === undefined, {
641
- message: "`facets` moved to `browse.facets` in grove.config.ts. " +
642
- `Supported ids: ${FACET_IDS.join(", ")} (canonical spellings only).`,
630
+ message: '`facets` moved to `browse.facets` in grove.config.ts. ' +
631
+ `Supported ids: ${FACET_IDS.join(', ')} (canonical spellings only).`,
643
632
  }),
644
633
  integrations: z
645
634
  .object({
@@ -678,30 +667,30 @@ export const groveConfigSchema = z.object({
678
667
  readme: readmeConfigSchema.optional(),
679
668
  paths: z
680
669
  .object({
681
- dataDir: z.string().default("data"),
682
- contentDir: z.string().default("content"),
683
- recordsDir: z.string().default("data/records"),
684
- pagesDir: z.string().default("content/pages"),
685
- bodiesDir: z.string().default("content/records"),
686
- publicDir: z.string().default("public"),
687
- taxonomyDir: z.string().default("data/taxonomy"),
688
- generatedDir: z.string().default("data/generated"),
689
- health: z.string().default("data/health.yml"),
690
- decisions: z.string().default("data/decisions.yml"),
691
- overrides: z.string().default("data/overrides.yml"),
670
+ dataDir: z.string().default('data'),
671
+ contentDir: z.string().default('content'),
672
+ recordsDir: z.string().default('data/records'),
673
+ pagesDir: z.string().default('content/pages'),
674
+ bodiesDir: z.string().default('content/records'),
675
+ publicDir: z.string().default('public'),
676
+ taxonomyDir: z.string().default('data/taxonomy'),
677
+ generatedDir: z.string().default('data/generated'),
678
+ health: z.string().default('data/health.yml'),
679
+ decisions: z.string().default('data/decisions.yml'),
680
+ overrides: z.string().default('data/overrides.yml'),
692
681
  })
693
682
  .default({
694
- dataDir: "data",
695
- contentDir: "content",
696
- recordsDir: "data/records",
697
- pagesDir: "content/pages",
698
- bodiesDir: "content/records",
699
- publicDir: "public",
700
- taxonomyDir: "data/taxonomy",
701
- generatedDir: "data/generated",
702
- health: "data/health.yml",
703
- decisions: "data/decisions.yml",
704
- overrides: "data/overrides.yml",
683
+ dataDir: 'data',
684
+ contentDir: 'content',
685
+ recordsDir: 'data/records',
686
+ pagesDir: 'content/pages',
687
+ bodiesDir: 'content/records',
688
+ publicDir: 'public',
689
+ taxonomyDir: 'data/taxonomy',
690
+ generatedDir: 'data/generated',
691
+ health: 'data/health.yml',
692
+ decisions: 'data/decisions.yml',
693
+ overrides: 'data/overrides.yml',
705
694
  }),
706
695
  });
707
696
  // ──────────────────────────────────────────────────────────────────────
@@ -725,8 +714,8 @@ export function parseRecordYaml(text, fileSlug) {
725
714
  // record file cannot smuggle `!!binary` / `!!js/function` / etc.
726
715
  // into host objects. The default schema would interpret them.
727
716
  // (Implementation-checklist.md #27.)
728
- const raw = parse(text, { schema: "core" }) ?? {};
729
- if (typeof raw !== "object" || Array.isArray(raw)) {
717
+ const raw = parse(text, { schema: 'core' }) ?? {};
718
+ if (typeof raw !== 'object' || Array.isArray(raw)) {
730
719
  throw new Error(`${fileSlug}: record file must contain a YAML mapping`);
731
720
  }
732
721
  return raw;
@@ -735,7 +724,7 @@ export function stringifyRecordYaml(record) {
735
724
  return stringify(record, {
736
725
  lineWidth: 100,
737
726
  singleQuote: false,
738
- defaultStringType: "PLAIN",
727
+ defaultStringType: 'PLAIN',
739
728
  });
740
729
  }
741
730
  export function getOwnerRepoFromUrl(repoUrl) {
@@ -748,16 +737,16 @@ export function getOwnerRepoFromUrl(repoUrl) {
748
737
  const repo = m[2];
749
738
  if (!owner || !repo)
750
739
  return null;
751
- return { owner, repo: repo.replace(/\.git$/, "") };
740
+ return { owner, repo: repo.replace(/\.git$/, '') };
752
741
  }
753
742
  export function isIndexProject(r) {
754
- return r.kind === "project";
743
+ return r.kind === 'project';
755
744
  }
756
745
  export function isIndexResource(r) {
757
- return r.kind === "resource";
746
+ return r.kind === 'resource';
758
747
  }
759
748
  export function isIndexEntity(r) {
760
- return r.kind === "entity";
749
+ return r.kind === 'entity';
761
750
  }
762
751
  /**
763
752
  * Project a Resource to a stable, search-index-friendly summary
@@ -781,15 +770,15 @@ export function toIndexRecord(record) {
781
770
  description: record.description,
782
771
  content: record.content,
783
772
  curation: record.curation,
784
- licenses: record.kind === "project" ? record.licenses ?? [] : [],
773
+ licenses: record.kind === 'project' ? (record.licenses ?? []) : [],
785
774
  summary: record.summary,
786
775
  sourceDescription: record.sourceDescription,
787
776
  };
788
- if (record.kind === "project") {
777
+ if (record.kind === 'project') {
789
778
  const r = record;
790
779
  return {
791
780
  ...base,
792
- kind: "project",
781
+ kind: 'project',
793
782
  name: r.name,
794
783
  stack: r.stack,
795
784
  stacks: r.stacks ?? [],
@@ -810,7 +799,7 @@ export function toIndexRecord(record) {
810
799
  // from signals) or the curation override (`decisions.yml`).
811
800
  // The generate step folds the latter in before serialising,
812
801
  // so this is a best-effort projection of the current state.
813
- visibility: r.health?.visibility ?? "keep",
802
+ visibility: r.health?.visibility ?? 'keep',
814
803
  github: r.github?.repository
815
804
  ? {
816
805
  fullName: r.github.repository.full_name,
@@ -826,11 +815,11 @@ export function toIndexRecord(record) {
826
815
  : undefined,
827
816
  };
828
817
  }
829
- if (record.kind === "resource") {
818
+ if (record.kind === 'resource') {
830
819
  const r = record;
831
820
  return {
832
821
  ...base,
833
- kind: "resource",
822
+ kind: 'resource',
834
823
  title: r.title,
835
824
  type: r.type,
836
825
  topic: r.topic,
@@ -848,7 +837,7 @@ export function toIndexRecord(record) {
848
837
  const e = record;
849
838
  return {
850
839
  ...base,
851
- kind: "entity",
840
+ kind: 'entity',
852
841
  name: e.name,
853
842
  type: e.type,
854
843
  founded: e.founded,