metascope 0.7.0 → 0.7.2

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 (80) hide show
  1. package/dist/bin/chunk-Bdh3yLIe.js +1 -0
  2. package/dist/bin/cli.js +308 -284
  3. package/dist/bin/dns-CUigd8AG.js +1 -0
  4. package/dist/bin/{jiti-D2Njwwqq.js → jiti-BTBDwj9g.js} +2 -2
  5. package/dist/bin/renovate-DxDKd5Ft.js +1 -0
  6. package/dist/bin/shared-CTlQdTfh.js +5 -0
  7. package/dist/lib/file-matching.js +20 -13
  8. package/dist/lib/log.d.ts +6 -4
  9. package/dist/lib/log.js +5 -3
  10. package/dist/lib/metadata-types.d.ts +33 -21
  11. package/dist/lib/metadata-types.js +8 -9
  12. package/dist/lib/metadata.js +7 -7
  13. package/dist/lib/package.js +1 -1
  14. package/dist/lib/parsers/gemspec-parser.js +16 -14
  15. package/dist/lib/parsers/go-mod-parser.js +13 -10
  16. package/dist/lib/parsers/makefile-config-parser.js +20 -17
  17. package/dist/lib/parsers/properties-parser.js +3 -3
  18. package/dist/lib/parsers/rfc822-header-parser.js +4 -4
  19. package/dist/lib/parsers/setup-py-parser.js +3 -4
  20. package/dist/lib/source.d.ts +1 -0
  21. package/dist/lib/source.js +5 -4
  22. package/dist/lib/sources/arduino-library-properties.d.ts +10 -10
  23. package/dist/lib/sources/arduino-library-properties.js +32 -15
  24. package/dist/lib/sources/cinder-cinderblock-xml.d.ts +11 -11
  25. package/dist/lib/sources/cinder-cinderblock-xml.js +21 -9
  26. package/dist/lib/sources/codemeta-json.d.ts +66 -66
  27. package/dist/lib/sources/codemeta-json.js +27 -23
  28. package/dist/lib/sources/git-stats.js +1 -1
  29. package/dist/lib/sources/github-actions.js +9 -2
  30. package/dist/lib/sources/github.js +1 -1
  31. package/dist/lib/sources/go-go-mod.d.ts +4 -4
  32. package/dist/lib/sources/go-goreleaser-yaml.d.ts +8 -8
  33. package/dist/lib/sources/go-goreleaser-yaml.js +5 -4
  34. package/dist/lib/sources/java-pom-xml.d.ts +12 -12
  35. package/dist/lib/sources/java-pom-xml.js +38 -19
  36. package/dist/lib/sources/metadata-file.d.ts +4 -4
  37. package/dist/lib/sources/metadata-file.js +15 -12
  38. package/dist/lib/sources/node-npm-registry.js +1 -1
  39. package/dist/lib/sources/openframeworks-addon-config-mk.d.ts +7 -7
  40. package/dist/lib/sources/openframeworks-addon-config-mk.js +7 -0
  41. package/dist/lib/sources/openframeworks-install-xml.d.ts +10 -10
  42. package/dist/lib/sources/openframeworks-install-xml.js +24 -14
  43. package/dist/lib/sources/processing-library-properties.d.ts +8 -8
  44. package/dist/lib/sources/processing-library-properties.js +25 -10
  45. package/dist/lib/sources/processing-sketch-properties.d.ts +16 -16
  46. package/dist/lib/sources/processing-sketch-properties.js +51 -7
  47. package/dist/lib/sources/publiccode-yaml.d.ts +23 -23
  48. package/dist/lib/sources/publiccode-yaml.js +37 -5
  49. package/dist/lib/sources/python-pkg-info.d.ts +18 -18
  50. package/dist/lib/sources/python-pkg-info.js +2 -2
  51. package/dist/lib/sources/python-setup-cfg.d.ts +14 -14
  52. package/dist/lib/sources/python-setup-cfg.js +2 -2
  53. package/dist/lib/sources/python-setup-py.d.ts +14 -14
  54. package/dist/lib/sources/readme-file.js +9 -2
  55. package/dist/lib/sources/ruby-gemspec.d.ts +22 -22
  56. package/dist/lib/sources/ruby-gemspec.js +1 -0
  57. package/dist/lib/sources/rust-cargo-toml.d.ts +14 -14
  58. package/dist/lib/sources/rust-cargo-toml.js +29 -10
  59. package/dist/lib/sources/xcode-info-plist.d.ts +12 -12
  60. package/dist/lib/sources/xcode-info-plist.js +48 -24
  61. package/dist/lib/sources/xcode-project-pbxproj.d.ts +8 -8
  62. package/dist/lib/sources/xcode-project-pbxproj.js +22 -12
  63. package/dist/lib/templates/codemeta-json.d.ts +4 -5
  64. package/dist/lib/templates/codemeta-json.js +4 -5
  65. package/dist/lib/templates/codemeta.js +30 -30
  66. package/dist/lib/templates/metadata.d.ts +2 -2
  67. package/dist/lib/templates/metadata.js +3 -3
  68. package/dist/lib/utilities/codemeta-helpers.d.ts +3 -2
  69. package/dist/lib/utilities/codemeta-helpers.js +14 -12
  70. package/dist/lib/utilities/fetch.js +2 -2
  71. package/dist/lib/utilities/formatting.js +4 -3
  72. package/dist/lib/utilities/github.js +3 -3
  73. package/dist/lib/utilities/license-identification.d.ts +3 -1
  74. package/dist/lib/utilities/license-identification.js +21 -25
  75. package/dist/lib/utilities/schema-primitives.js +16 -13
  76. package/dist/lib/utilities/template-helpers.js +3 -3
  77. package/package.json +14 -14
  78. package/readme.md +7 -3
  79. package/dist/.DS_Store +0 -0
  80. package/dist/bin/chunk-BjEoQXZ0.js +0 -1
@@ -32,24 +32,40 @@ const CANONICAL_CATEGORIES = [
32
32
  const CATEGORY_MAP = new Map(CANONICAL_CATEGORIES.map((cat) => [cat.replaceAll(/[^a-z]/gi, "").toLowerCase(), cat]));
33
33
  CATEGORY_MAP.set("sensor", "Sensors");
34
34
  const arduinoLibraryPropertiesSchema = z.object({
35
+ /** Comma-separated architecture identifiers, or ["*"] for all. */
35
36
  architectures: stringArray,
37
+ /** Parsed author entries. */
36
38
  authors: z.array(arduinoLibraryPropertiesPersonEntrySchema),
39
+ /** Normalized category, or undefined if invalid/empty. */
37
40
  category: z.enum(CANONICAL_CATEGORIES).optional(),
41
+ /** Parsed dependency entries. */
38
42
  depends: z.array(arduinoLibraryPropertiesDependencyEntrySchema),
43
+ /** Top-level email field (non-standard, used in some fixtures). */
39
44
  email: nonEmptyString,
45
+ /** Comma-separated header files. */
40
46
  includes: stringArray,
47
+ /** License value (non-standard field). */
41
48
  license: nonEmptyString,
49
+ /** Parsed maintainer entry. */
42
50
  maintainer: arduinoLibraryPropertiesPersonEntrySchema.optional(),
51
+ /** Library name. */
43
52
  name: nonEmptyString,
53
+ /** Extended description paragraph. */
44
54
  paragraph: nonEmptyString,
55
+ /** Raw key-value pairs. */
45
56
  raw: z.record(z.string(), z.string()),
57
+ /** Repository URL (non-standard field). */
46
58
  repository: optionalUrl,
59
+ /** One-sentence description. */
47
60
  sentence: nonEmptyString,
61
+ /** Project URL. */
48
62
  url: optionalUrl,
63
+ /** Library version. */
49
64
  version: nonEmptyString
50
65
  });
51
66
  /**
52
- * Parse an Arduino `library.properties` content string into a structured object.
67
+ * Parse an Arduino `library.properties` content string into a structured
68
+ * object.
53
69
  */
54
70
  function parse(content) {
55
71
  const raw = parseProperties(content);
@@ -78,19 +94,20 @@ function get(raw, key) {
78
94
  }
79
95
  /** Return a trimmed string, or undefined if empty/whitespace-only. */
80
96
  function nonEmpty(value) {
81
- if (value === void 0) return void 0;
97
+ if (value === void 0) return;
82
98
  const trimmed = value.trim();
83
99
  return trimmed.length > 0 ? trimmed : void 0;
84
100
  }
85
101
  /**
86
- * Normalize a category string to the canonical Arduino category.
87
- * Strips all non-letter characters, lowercases, and matches against the canonical map.
88
- * For comma-separated values (e.g. "Sensors, Timing"), takes the first valid match.
102
+ * Normalize a category string to the canonical Arduino category. Strips all
103
+ * non-letter characters, lowercases, and matches against the canonical map. For
104
+ * comma-separated values (e.g. "Sensors, Timing"), takes the first valid
105
+ * match.
89
106
  */
90
107
  function normalizeCategory(value) {
91
- if (value === void 0) return void 0;
108
+ if (value === void 0) return;
92
109
  const trimmed = value.trim();
93
- if (trimmed.length === 0) return void 0;
110
+ if (trimmed.length === 0) return;
94
111
  for (const part of trimmed.split(",")) {
95
112
  const key = part.replaceAll(/[^a-z]/gi, "").toLowerCase();
96
113
  if (key.length === 0) continue;
@@ -128,9 +145,9 @@ function parsePersonList(value) {
128
145
  return results;
129
146
  }
130
147
  /**
131
- * Parse a comma-separated list of dependencies with optional version constraints.
132
- * e.g. "ArduinoHttpClient (>=1.0.0), ArduinoJson" →
133
- * [{ name: "ArduinoHttpClient", versionConstraint: ">=1.0.0" }, ...]
148
+ * Parse a comma-separated list of dependencies with optional version
149
+ * constraints. e.g. "ArduinoHttpClient (>=1.0.0), ArduinoJson" → [{ name:
150
+ * "ArduinoHttpClient", versionConstraint: ">=1.0.0" }, ...]
134
151
  */
135
152
  function parseDependencies(value) {
136
153
  const trimmed = value.trim();
@@ -162,8 +179,8 @@ function parseDependencies(value) {
162
179
  return results;
163
180
  }
164
181
  /**
165
- * Arduino-specific fields that distinguish library.properties from
166
- * Processing's identically-named format.
182
+ * Arduino-specific fields that distinguish library.properties from Processing's
183
+ * identically-named format.
167
184
  */
168
185
  const ARDUINO_SPECIFIC_FIELDS = new Set([
169
186
  "architectures",
@@ -178,9 +195,9 @@ const PROCESSING_EXCLUSIVE_FIELDS = new Set([
178
195
  "prettyversion"
179
196
  ]);
180
197
  /**
181
- * Validate that a library.properties file is Arduino (not Processing).
182
- * Requires name=, version=, author= and either an Arduino-specific field
183
- * or no Processing-exclusive fields.
198
+ * Validate that a library.properties file is Arduino (not Processing). Requires
199
+ * name=, version=, author= and either an Arduino-specific field or no
200
+ * Processing-exclusive fields.
184
201
  */
185
202
  function isArduinoLibraryProperties(content) {
186
203
  const raw = parseProperties(content);
@@ -3,17 +3,17 @@ import { z } from "zod";
3
3
 
4
4
  //#region src/lib/sources/cinder-cinderblock-xml.d.ts
5
5
  declare const cinderCinderblockSchema: z.ZodObject<{
6
- author: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>;
7
- git: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
8
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
9
- library: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
10
- license: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
11
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
12
- requires: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>;
13
- summary: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
14
- supports: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>;
15
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
16
- version: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
6
+ author: z.ZodDefault<z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>>;
7
+ git: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
8
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
9
+ library: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
10
+ license: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
11
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
12
+ requires: z.ZodDefault<z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>>;
13
+ summary: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
14
+ supports: z.ZodDefault<z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>>;
15
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
16
+ version: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
17
17
  }, z.core.$strip>;
18
18
  type CinderCinderblock = z.infer<typeof cinderCinderblockSchema>;
19
19
  type CinderCinderblockXmlData = OneOrMany<SourceRecord<CinderCinderblock>> | undefined;
@@ -18,16 +18,27 @@ import { XMLParser } from "fast-xml-parser";
18
18
  * Uses `fast-xml-parser` with attribute parsing enabled.
19
19
  */
20
20
  const cinderCinderblockSchema = z.object({
21
+ /** Block author name(s), split from comma-separated values. */
21
22
  author: stringArray,
23
+ /** Git repository URL. */
22
24
  git: optionalUrl,
25
+ /** Block identifier (e.g. "info.v002.syphon"). */
23
26
  id: nonEmptyString,
27
+ /** Library or libraryUrl reference link. */
24
28
  library: optionalUrl,
29
+ /** License identifier. */
25
30
  license: nonEmptyString,
31
+ /** Block display name. */
26
32
  name: nonEmptyString,
33
+ /** Software dependencies from `<requires>` elements. */
27
34
  requires: stringArray,
35
+ /** Block summary / description. */
28
36
  summary: nonEmptyString,
37
+ /** Supported operating systems from `<supports os="...">` elements. */
29
38
  supports: stringArray,
39
+ /** Project URL. */
30
40
  url: optionalUrl,
41
+ /** Version string. */
31
42
  version: nonEmptyString
32
43
  });
33
44
  /**
@@ -40,8 +51,8 @@ const OS_MAP = {
40
51
  msw: "Windows"
41
52
  };
42
53
  /**
43
- * Parse a `cinderblock.xml` content string into a structured object.
44
- * Returns undefined if the XML is malformed or missing the expected structure.
54
+ * Parse a `cinderblock.xml` content string into a structured object. Returns
55
+ * undefined if the XML is malformed or missing the expected structure.
45
56
  */
46
57
  function parse(content) {
47
58
  const parser = new XMLParser({
@@ -52,14 +63,14 @@ function parse(content) {
52
63
  let data;
53
64
  try {
54
65
  const parsed = parser.parse(content);
55
- if (!is.plainObject(parsed)) return void 0;
66
+ if (!is.plainObject(parsed)) return;
56
67
  data = parsed;
57
68
  } catch {
58
69
  return;
59
70
  }
60
- if (!is.plainObject(data.cinder)) return void 0;
71
+ if (!is.plainObject(data.cinder)) return;
61
72
  const { cinder } = data;
62
- if (!is.plainObject(cinder.block)) return void 0;
73
+ if (!is.plainObject(cinder.block)) return;
63
74
  const { block } = cinder;
64
75
  return cinderCinderblockSchema.parse({
65
76
  author: splitCommaSeparated(getAttribute(block, "author")),
@@ -76,17 +87,18 @@ function parse(content) {
76
87
  });
77
88
  }
78
89
  /**
79
- * Get a trimmed string attribute from a parsed XML element.
80
- * fast-xml-parser stores attributes with the `@_` prefix.
90
+ * Get a trimmed string attribute from a parsed XML element. fast-xml-parser
91
+ * stores attributes with the `@_` prefix.
81
92
  */
82
93
  function getAttribute(element, name) {
83
94
  const value = element[`@_${name}`];
84
- if (typeof value !== "string") return void 0;
95
+ if (typeof value !== "string") return;
85
96
  const trimmed = value.trim();
86
97
  return trimmed.length > 0 ? trimmed : void 0;
87
98
  }
88
99
  /**
89
- * Extract deduplicated, mapped operating system names from `<supports os="...">` elements.
100
+ * Extract deduplicated, mapped operating system names from `<supports
101
+ * os="...">` elements.
90
102
  */
91
103
  function parseOperatingSystems(block) {
92
104
  const results = [];
@@ -3,113 +3,113 @@ import { z } from "zod";
3
3
 
4
4
  //#region src/lib/sources/codemeta-json.d.ts
5
5
  declare const codeMetaJsonDataSchema: z.ZodObject<{
6
- applicationCategory: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
7
- applicationSubCategory: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
6
+ applicationCategory: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
7
+ applicationSubCategory: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
8
8
  author: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
9
- affiliation: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
10
- email: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
11
- familyName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
12
- givenName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
13
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
14
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
9
+ affiliation: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
10
+ email: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
11
+ familyName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
12
+ givenName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
13
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
14
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
15
15
  type: z.ZodOptional<z.ZodEnum<{
16
16
  Organization: "Organization";
17
17
  Person: "Person";
18
18
  }>>;
19
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
19
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
20
20
  }, z.core.$strip>>>>>;
21
- buildInstructions: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
22
- codeRepository: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
23
- continuousIntegration: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
21
+ buildInstructions: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
22
+ codeRepository: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
23
+ continuousIntegration: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
24
24
  contributor: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
25
- affiliation: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
26
- email: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
27
- familyName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
28
- givenName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
29
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
30
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
25
+ affiliation: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
26
+ email: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
27
+ familyName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
28
+ givenName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
29
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
30
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
31
31
  type: z.ZodOptional<z.ZodEnum<{
32
32
  Organization: "Organization";
33
33
  Person: "Person";
34
34
  }>>;
35
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
35
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
36
36
  }, z.core.$strip>>>>>;
37
37
  copyrightHolder: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
38
- affiliation: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
39
- email: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
40
- familyName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
41
- givenName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
42
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
43
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
38
+ affiliation: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
39
+ email: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
40
+ familyName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
41
+ givenName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
42
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
43
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
44
44
  type: z.ZodOptional<z.ZodEnum<{
45
45
  Organization: "Organization";
46
46
  Person: "Person";
47
47
  }>>;
48
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
48
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
49
49
  }, z.core.$strip>>>>>;
50
- copyrightYear: z.ZodPipe<z.ZodTransform<number | undefined, unknown>, z.ZodOptional<z.ZodNumber>>;
51
- dateCreated: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
52
- dateModified: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
53
- datePublished: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
54
- description: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
55
- developmentStatus: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
56
- downloadUrl: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
50
+ copyrightYear: z.ZodOptional<z.ZodPipe<z.ZodTransform<number | undefined, unknown>, z.ZodOptional<z.ZodNumber>>>;
51
+ dateCreated: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
52
+ dateModified: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
53
+ datePublished: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
54
+ description: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
55
+ developmentStatus: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
56
+ downloadUrl: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
57
57
  funder: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
58
- affiliation: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
59
- email: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
60
- familyName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
61
- givenName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
62
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
63
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
58
+ affiliation: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
59
+ email: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
60
+ familyName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
61
+ givenName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
62
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
63
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
64
64
  type: z.ZodOptional<z.ZodEnum<{
65
65
  Organization: "Organization";
66
66
  Person: "Person";
67
67
  }>>;
68
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
68
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
69
69
  }, z.core.$strip>>>>>;
70
- funding: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
71
- identifier: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
72
- installUrl: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
70
+ funding: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
71
+ identifier: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
72
+ installUrl: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
73
73
  isAccessibleForFree: z.ZodOptional<z.ZodBoolean>;
74
- issueTracker: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
74
+ issueTracker: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
75
75
  keywords: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
76
76
  license: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | string[] | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>>;
77
77
  maintainer: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
78
- affiliation: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
79
- email: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
80
- familyName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
81
- givenName: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
82
- id: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
83
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
78
+ affiliation: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
79
+ email: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
80
+ familyName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
81
+ givenName: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
82
+ id: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
83
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
84
84
  type: z.ZodOptional<z.ZodEnum<{
85
85
  Organization: "Organization";
86
86
  Person: "Person";
87
87
  }>>;
88
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
88
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
89
89
  }, z.core.$strip>>>>>;
90
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
90
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
91
91
  operatingSystem: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
92
92
  programmingLanguage: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
93
- readme: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
93
+ readme: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
94
94
  relatedLink: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | string[] | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>>;
95
- releaseNotes: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
95
+ releaseNotes: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
96
96
  runtimePlatform: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
97
- softwareHelp: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
97
+ softwareHelp: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
98
98
  softwareRequirements: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
99
- identifier: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
100
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
101
- runtimePlatform: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
102
- version: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
99
+ identifier: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
100
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
101
+ runtimePlatform: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
102
+ version: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
103
103
  }, z.core.$strip>>>>>;
104
104
  softwareSuggestions: z.ZodOptional<z.ZodPipe<z.ZodTransform<Record<string, unknown>[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodObject<{
105
- identifier: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
106
- name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
107
- runtimePlatform: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
108
- version: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
105
+ identifier: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
106
+ name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
107
+ runtimePlatform: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
108
+ version: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
109
109
  }, z.core.$strip>>>>>;
110
- softwareVersion: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
111
- url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
112
- version: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
110
+ softwareVersion: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
111
+ url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
112
+ version: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>>>;
113
113
  }, z.core.$strip>;
114
114
  type CodeMetaJson = z.infer<typeof codeMetaJsonDataSchema>;
115
115
  type CodeMetaJsonData = OneOrMany<SourceRecord<CodeMetaJson>> | undefined;
@@ -12,15 +12,17 @@ import { z } from "zod";
12
12
  * CodeMeta JSON metadata source.
13
13
  *
14
14
  * Reads a codemeta.json file (v1, v2, or v3) and normalizes it into a
15
- * consistent shape with predictable types. No enrichment, no JSON-LD
16
- * expansion — just an honest representation of what's in the file.
15
+ * consistent shape with predictable types. No enrichment, no JSON-LD expansion
16
+ * — just an honest representation of what's in the file.
17
17
  *
18
18
  * Uses Zod preprocess schemas to handle v1/v2/v3 normalization:
19
- * - `@`-prefixed JSON-LD keys stripped, v1 property names remapped
20
- * - `{"@type": "xsd:anyURI", "@value": "..."}` unwrapped to plain strings
21
- * - Person/org objects normalized (`@type`→`type`, `@id`→`id`, affiliation-as-object)
22
- * - Comma-separated strings split to arrays, `{"name":"..."}` objects unwrapped
23
- * - Dependencies normalized (string → `{name: string}`)
19
+ *
20
+ * - `@`-prefixed JSON-LD keys stripped, v1 property names remapped
21
+ * - `{"@type": "xsd:anyURI", "@value": "..."}` unwrapped to plain strings
22
+ * - Person/org objects normalized (`@type`→`type`, `@id`→`id`,
23
+ * affiliation-as-object)
24
+ * - Comma-separated strings split to arrays, `{"name":"..."}` objects unwrapped
25
+ * - Dependencies normalized (string → `{name: string}`)
24
26
  */
25
27
  /**
26
28
  * A string that also unwraps `{"@value": "..."}` JSON-LD typed values.
@@ -29,17 +31,19 @@ import { z } from "zod";
29
31
  const codeMetaString = z.preprocess((value) => {
30
32
  if (typeof value === "string") return value;
31
33
  if (is.plainObject(value) && typeof value["@value"] === "string") return value["@value"];
32
- }, nonEmptyString);
34
+ }, nonEmptyString).optional();
33
35
  /** Same as codeMetaString but semantically a URL field. */
34
36
  const codeMetaUrl = z.preprocess((value) => {
35
37
  if (typeof value === "string") return value;
36
38
  if (is.plainObject(value) && typeof value["@value"] === "string") return value["@value"];
37
- }, optionalUrl);
39
+ }, optionalUrl).optional();
38
40
  /**
39
41
  * A string array that handles CodeMeta's polymorphic inputs:
40
- * - Single comma-separated string → split to array (common in v1)
41
- * - Array of stringspass through
42
- * - Array of `{"name":"..."}` objects extract name strings (e.g. programmingLanguage)
42
+ *
43
+ * - Single comma-separated stringsplit to array (common in v1)
44
+ * - Array of stringspass through
45
+ * - Array of `{"name":"..."}` objects → extract name strings (e.g.
46
+ * programmingLanguage)
43
47
  */
44
48
  const codeMetaStringArray = z.preprocess((value) => {
45
49
  if (value === void 0 || value === null) return;
@@ -72,9 +76,9 @@ const codeMetaPersonOrOrgSchema = z.object({
72
76
  url: optionalUrl
73
77
  });
74
78
  /**
75
- * Preprocess a raw person/org value into a normalized shape.
76
- * Handles: plain string → {name: string}, `@type`→`type`, `@id`→`id`,
77
- * affiliation-as-object → affiliation string.
79
+ * Preprocess a raw person/org value into a normalized shape. Handles: plain
80
+ * string → {name: string}, `@type`→`type`, `@id`→`id`, affiliation-as-object →
81
+ * affiliation string.
78
82
  */
79
83
  function preprocessPersonOrOrg(value) {
80
84
  if (typeof value === "string") return { name: value };
@@ -96,8 +100,8 @@ function preprocessPersonOrOrg(value) {
96
100
  if (result.name ?? result.givenName ?? result.familyName ?? result.email) return result;
97
101
  }
98
102
  /**
99
- * A person/org array that normalizes single values to arrays,
100
- * and each element through `preprocessPersonOrOrg`.
103
+ * A person/org array that normalizes single values to arrays, and each element
104
+ * through `preprocessPersonOrOrg`.
101
105
  */
102
106
  const codeMetaPersonArray = z.preprocess((value) => {
103
107
  if (value === void 0 || value === null) return;
@@ -111,8 +115,8 @@ const codeMetaDependencySchema = z.object({
111
115
  version: nonEmptyString
112
116
  });
113
117
  /**
114
- * Preprocess a raw dependency value into a normalized shape.
115
- * Handles: plain string → {name: string}.
118
+ * Preprocess a raw dependency value into a normalized shape. Handles: plain
119
+ * string → {name: string}.
116
120
  */
117
121
  function preprocessDependency(value) {
118
122
  if (typeof value === "string") return { name: value };
@@ -125,8 +129,8 @@ function preprocessDependency(value) {
125
129
  if (dep.name ?? dep.identifier) return dep;
126
130
  }
127
131
  /**
128
- * A dependency array that normalizes single values to arrays,
129
- * and each element through `preprocessDependency`.
132
+ * A dependency array that normalizes single values to arrays, and each element
133
+ * through `preprocessDependency`.
130
134
  */
131
135
  const codeMetaDependencyArray = z.preprocess((value) => {
132
136
  if (value === void 0 || value === null) return;
@@ -148,7 +152,7 @@ const codeMetaJsonDataSchema = z.object({
148
152
  const parsed = Number.parseInt(v, 10);
149
153
  return Number.isNaN(parsed) ? void 0 : parsed;
150
154
  }
151
- }, z.number().optional()),
155
+ }, z.number().optional()).optional(),
152
156
  dateCreated: codeMetaString,
153
157
  dateModified: codeMetaString,
154
158
  datePublished: codeMetaString,
@@ -191,7 +195,7 @@ const v1PropertyMap = {
191
195
  */
192
196
  function parse(content) {
193
197
  const raw = parseJsonRecord(content);
194
- if (!raw) return void 0;
198
+ if (!raw) return;
195
199
  const migrated = migrateV1Properties(raw);
196
200
  if (migrated.datePublished === void 0 && typeof migrated.dateReleased === "string") migrated.datePublished = migrated.dateReleased;
197
201
  return codeMetaJsonDataSchema.parse(migrated);
@@ -48,7 +48,7 @@ const gitStatsSource = defineSource({
48
48
  }
49
49
  }).then((sizes) => sizes.reduce((sum, size) => sum + size, 0)),
50
50
  (async () => {
51
- if (!tagNameLatest) return void 0;
51
+ if (!tagNameLatest) return;
52
52
  try {
53
53
  return (await git.raw([
54
54
  "log",
@@ -39,12 +39,19 @@ const workflowRunConclusion = z.enum([
39
39
  "timed_out"
40
40
  ]);
41
41
  const githubActionSchema = z.object({
42
+ /** Relative path to the workflow file. */
42
43
  file: z.string(),
44
+ /** ISO 8601 timestamp of the latest completed run on the default branch. */
43
45
  lastRunAt: z.string().optional(),
46
+ /** Conclusion of the latest run on the default branch. */
44
47
  lastRunConclusion: workflowRunConclusion.optional(),
48
+ /** Duration of the latest run in milliseconds. */
45
49
  lastRunDurationMs: z.number().optional(),
50
+ /** Status of the latest run on the default branch. */
46
51
  lastRunStatus: workflowRunStatus.optional(),
52
+ /** URL of the latest run on GitHub. */
47
53
  lastRunUrl: z.string().optional(),
54
+ /** Workflow name from the `name` field. */
48
55
  name: z.string()
49
56
  });
50
57
  /** Resolve owner/repo from git config remotes in context. */
@@ -93,7 +100,7 @@ async function fetchWorkflowRuns(octokit, owner, repo, defaultBranch) {
93
100
  const githubActionsSource = {
94
101
  async extract(context) {
95
102
  const inputs = await getMatches(context.options, [".github/workflows/*.{yml,yaml}"]);
96
- if (inputs.length === 0) return void 0;
103
+ if (inputs.length === 0) return;
97
104
  const records = [];
98
105
  for (const input of inputs) try {
99
106
  const parsed = parse(await readFile(input, "utf8"));
@@ -112,7 +119,7 @@ const githubActionsSource = {
112
119
  } catch (error) {
113
120
  log.warn(`Failed to parse workflow "${input}": ${error instanceof Error ? error.message : String(error)}`);
114
121
  }
115
- if (records.length === 0) return void 0;
122
+ if (records.length === 0) return;
116
123
  if (context.options.offline) log.debug("Skipping GitHub Actions run data (offline mode)");
117
124
  else try {
118
125
  const ownerRepo = await resolveOwnerRepo(context);
@@ -218,7 +218,7 @@ async function checkHasPages(octokit, owner, repo) {
218
218
  }
219
219
  async function getUpstreamComparison(octokit, owner, repo, defaultBranch, parent) {
220
220
  const parentBranch = parent.defaultBranchRef?.name;
221
- if (!parentBranch) return void 0;
221
+ if (!parentBranch) return;
222
222
  try {
223
223
  const response = await octokit.rest.repos.compareCommitsWithBasehead({
224
224
  basehead: `${parent.owner.login}:${parentBranch}...${owner}:${defaultBranch}`,
@@ -7,10 +7,10 @@ declare const goModDataSchema: z.ZodObject<{
7
7
  module: z.ZodString;
8
8
  version: z.ZodString;
9
9
  }, z.core.$strip>>;
10
- go_version: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
11
- module: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
12
- repository_url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
13
- tool_dependencies: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>;
10
+ go_version: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
11
+ module: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
12
+ repository_url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
13
+ tool_dependencies: z.ZodDefault<z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>>;
14
14
  }, z.core.$strip>;
15
15
  /** Parsed go.mod metadata */
16
16
  type GoMod = z.infer<typeof goModDataSchema>;
@@ -3,14 +3,14 @@ import { z } from "zod";
3
3
 
4
4
  //#region src/lib/sources/go-goreleaser-yaml.d.ts
5
5
  declare const goreleaserDataSchema: z.ZodObject<{
6
- description: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
7
- homepage: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
8
- license: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
9
- maintainer: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
10
- operating_systems: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>;
11
- project_name: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
12
- repository_url: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
13
- vendor: z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>;
6
+ description: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
7
+ homepage: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
8
+ license: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
9
+ maintainer: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
10
+ operating_systems: z.ZodDefault<z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodArray<z.ZodString>>>;
11
+ project_name: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
12
+ repository_url: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
13
+ vendor: z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodOptional<z.ZodString>>>;
14
14
  }, z.core.$strip>;
15
15
  /** Parsed goreleaser metadata */
16
16
  type Goreleaser = z.infer<typeof goreleaserDataSchema>;