@ploaness/governance 1.1.0 → 1.3.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 (236) hide show
  1. package/dist/a11y-hit-target.d.ts.map +1 -1
  2. package/dist/a11y-hit-target.js +1 -21
  3. package/dist/a11y-hit-target.js.map +1 -1
  4. package/dist/a11y-incomplete.d.ts.map +1 -1
  5. package/dist/a11y-incomplete.js +1 -18
  6. package/dist/a11y-incomplete.js.map +1 -1
  7. package/dist/access-boundary.d.ts +43 -1
  8. package/dist/access-boundary.d.ts.map +1 -1
  9. package/dist/access-boundary.js +146 -5
  10. package/dist/access-boundary.js.map +1 -1
  11. package/dist/admin-view-coverage.d.ts.map +1 -1
  12. package/dist/admin-view-coverage.js +1 -17
  13. package/dist/admin-view-coverage.js.map +1 -1
  14. package/dist/asset-policy.d.ts.map +1 -1
  15. package/dist/asset-policy.js +1 -23
  16. package/dist/asset-policy.js.map +1 -1
  17. package/dist/axe-coverage.d.ts +3 -4
  18. package/dist/axe-coverage.d.ts.map +1 -1
  19. package/dist/axe-coverage.js +18 -51
  20. package/dist/axe-coverage.js.map +1 -1
  21. package/dist/blocklist-entries.d.ts +36 -0
  22. package/dist/blocklist-entries.d.ts.map +1 -0
  23. package/dist/blocklist-entries.js +338 -0
  24. package/dist/blocklist-entries.js.map +1 -0
  25. package/dist/blocklist.d.ts +91 -0
  26. package/dist/blocklist.d.ts.map +1 -0
  27. package/dist/blocklist.js +187 -0
  28. package/dist/blocklist.js.map +1 -0
  29. package/dist/checkov-check.d.ts +9 -0
  30. package/dist/checkov-check.d.ts.map +1 -0
  31. package/dist/checkov-check.js +4 -0
  32. package/dist/checkov-check.js.map +1 -0
  33. package/dist/checkov-checks-aws.d.ts +4 -0
  34. package/dist/checkov-checks-aws.d.ts.map +1 -0
  35. package/dist/checkov-checks-aws.js +93 -0
  36. package/dist/checkov-checks-aws.js.map +1 -0
  37. package/dist/checkov-checks-azure.d.ts +4 -0
  38. package/dist/checkov-checks-azure.d.ts.map +1 -0
  39. package/dist/checkov-checks-azure.js +32 -0
  40. package/dist/checkov-checks-azure.js.map +1 -0
  41. package/dist/checkov-checks-google.d.ts +6 -0
  42. package/dist/checkov-checks-google.d.ts.map +1 -0
  43. package/dist/checkov-checks-google.js +53 -0
  44. package/dist/checkov-checks-google.js.map +1 -0
  45. package/dist/checkov-policy.d.ts +63 -0
  46. package/dist/checkov-policy.d.ts.map +1 -0
  47. package/dist/checkov-policy.js +105 -0
  48. package/dist/checkov-policy.js.map +1 -0
  49. package/dist/container-failure.d.ts.map +1 -1
  50. package/dist/container-failure.js +1 -18
  51. package/dist/container-failure.js.map +1 -1
  52. package/dist/container-files.d.ts +16 -0
  53. package/dist/container-files.d.ts.map +1 -1
  54. package/dist/container-files.js +23 -8
  55. package/dist/container-files.js.map +1 -1
  56. package/dist/container-images.d.ts +43 -0
  57. package/dist/container-images.d.ts.map +1 -0
  58. package/dist/container-images.js +157 -0
  59. package/dist/container-images.js.map +1 -0
  60. package/dist/dependency-freshness.d.ts +8 -0
  61. package/dist/dependency-freshness.d.ts.map +1 -1
  62. package/dist/dependency-freshness.js +2 -18
  63. package/dist/dependency-freshness.js.map +1 -1
  64. package/dist/doc-blocks.d.ts.map +1 -1
  65. package/dist/doc-blocks.js +1 -13
  66. package/dist/doc-blocks.js.map +1 -1
  67. package/dist/editorconfig-policy.d.ts +7 -0
  68. package/dist/editorconfig-policy.d.ts.map +1 -1
  69. package/dist/editorconfig-policy.js +19 -12
  70. package/dist/editorconfig-policy.js.map +1 -1
  71. package/dist/environment-coherence.d.ts +59 -5
  72. package/dist/environment-coherence.d.ts.map +1 -1
  73. package/dist/environment-coherence.js +107 -27
  74. package/dist/environment-coherence.js.map +1 -1
  75. package/dist/environment-files.d.ts.map +1 -1
  76. package/dist/environment-files.js +1 -19
  77. package/dist/environment-files.js.map +1 -1
  78. package/dist/file-roles.d.ts +7 -2
  79. package/dist/file-roles.d.ts.map +1 -1
  80. package/dist/file-roles.js +10 -9
  81. package/dist/file-roles.js.map +1 -1
  82. package/dist/freshness-repair.d.ts +82 -0
  83. package/dist/freshness-repair.d.ts.map +1 -0
  84. package/dist/freshness-repair.js +91 -0
  85. package/dist/freshness-repair.js.map +1 -0
  86. package/dist/generated-denial.d.ts.map +1 -1
  87. package/dist/generated-denial.js +1 -9
  88. package/dist/generated-denial.js.map +1 -1
  89. package/dist/generated-drift.d.ts.map +1 -1
  90. package/dist/generated-drift.js +1 -12
  91. package/dist/generated-drift.js.map +1 -1
  92. package/dist/harness-package.d.ts +13 -0
  93. package/dist/harness-package.d.ts.map +1 -0
  94. package/dist/harness-package.js +20 -0
  95. package/dist/harness-package.js.map +1 -0
  96. package/dist/history-policy.d.ts.map +1 -1
  97. package/dist/history-policy.js +1 -7
  98. package/dist/history-policy.js.map +1 -1
  99. package/dist/image-assets.d.ts.map +1 -1
  100. package/dist/image-assets.js +1 -10
  101. package/dist/image-assets.js.map +1 -1
  102. package/dist/index.d.ts +20 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +20 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/install-policy.d.ts +21 -0
  107. package/dist/install-policy.d.ts.map +1 -1
  108. package/dist/install-policy.js +53 -1
  109. package/dist/install-policy.js.map +1 -1
  110. package/dist/jsx-accessibility-scope.d.ts +17 -0
  111. package/dist/jsx-accessibility-scope.d.ts.map +1 -0
  112. package/dist/jsx-accessibility-scope.js +36 -0
  113. package/dist/jsx-accessibility-scope.js.map +1 -0
  114. package/dist/jsx-accessibility.d.ts +13 -0
  115. package/dist/jsx-accessibility.d.ts.map +1 -0
  116. package/dist/jsx-accessibility.js +188 -0
  117. package/dist/jsx-accessibility.js.map +1 -0
  118. package/dist/network-policy.d.ts.map +1 -1
  119. package/dist/network-policy.js +1 -12
  120. package/dist/network-policy.js.map +1 -1
  121. package/dist/oxlint-policy.d.ts +16 -0
  122. package/dist/oxlint-policy.d.ts.map +1 -0
  123. package/dist/oxlint-policy.js +28 -0
  124. package/dist/oxlint-policy.js.map +1 -0
  125. package/dist/oxlint-report.d.ts +29 -0
  126. package/dist/oxlint-report.d.ts.map +1 -0
  127. package/dist/oxlint-report.js +84 -0
  128. package/dist/oxlint-report.js.map +1 -0
  129. package/dist/oxlint-scope.d.ts +13 -0
  130. package/dist/oxlint-scope.d.ts.map +1 -0
  131. package/dist/oxlint-scope.js +46 -0
  132. package/dist/oxlint-scope.js.map +1 -0
  133. package/dist/oxlint-suppressions.d.ts +17 -0
  134. package/dist/oxlint-suppressions.d.ts.map +1 -0
  135. package/dist/oxlint-suppressions.js +72 -0
  136. package/dist/oxlint-suppressions.js.map +1 -0
  137. package/dist/paired-assets.d.ts.map +1 -1
  138. package/dist/paired-assets.js.map +1 -1
  139. package/dist/payload-access.d.ts +6 -0
  140. package/dist/payload-access.d.ts.map +1 -1
  141. package/dist/payload-access.js +166 -9
  142. package/dist/payload-access.js.map +1 -1
  143. package/dist/payload-bootstrap.d.ts +52 -0
  144. package/dist/payload-bootstrap.d.ts.map +1 -0
  145. package/dist/payload-bootstrap.js +195 -0
  146. package/dist/payload-bootstrap.js.map +1 -0
  147. package/dist/payload-configs.d.ts +0 -1
  148. package/dist/payload-configs.d.ts.map +1 -1
  149. package/dist/payload-configs.js +36 -17
  150. package/dist/payload-configs.js.map +1 -1
  151. package/dist/payload-database.d.ts +80 -0
  152. package/dist/payload-database.d.ts.map +1 -0
  153. package/dist/payload-database.js +164 -0
  154. package/dist/payload-database.js.map +1 -0
  155. package/dist/payload-defaults.d.ts +128 -0
  156. package/dist/payload-defaults.d.ts.map +1 -0
  157. package/dist/payload-defaults.js +295 -0
  158. package/dist/payload-defaults.js.map +1 -0
  159. package/dist/payload-policy.d.ts +21 -0
  160. package/dist/payload-policy.d.ts.map +1 -1
  161. package/dist/payload-policy.js +92 -43
  162. package/dist/payload-policy.js.map +1 -1
  163. package/dist/relationship-cleanup.d.ts.map +1 -1
  164. package/dist/relationship-cleanup.js +16 -16
  165. package/dist/relationship-cleanup.js.map +1 -1
  166. package/dist/release-age.d.ts.map +1 -1
  167. package/dist/release-age.js +1 -16
  168. package/dist/release-age.js.map +1 -1
  169. package/dist/request-limits.d.ts.map +1 -1
  170. package/dist/request-limits.js +1 -11
  171. package/dist/request-limits.js.map +1 -1
  172. package/dist/route-map.d.ts.map +1 -1
  173. package/dist/route-map.js +1 -16
  174. package/dist/route-map.js.map +1 -1
  175. package/dist/run-plan.d.ts.map +1 -1
  176. package/dist/run-plan.js +1 -19
  177. package/dist/run-plan.js.map +1 -1
  178. package/dist/secret-policy.d.ts.map +1 -1
  179. package/dist/secret-policy.js +1 -11
  180. package/dist/secret-policy.js.map +1 -1
  181. package/dist/settings-layering.d.ts +8 -30
  182. package/dist/settings-layering.d.ts.map +1 -1
  183. package/dist/settings-layering.js +19 -48
  184. package/dist/settings-layering.js.map +1 -1
  185. package/dist/settings.d.ts +9 -2
  186. package/dist/settings.d.ts.map +1 -1
  187. package/dist/settings.js.map +1 -1
  188. package/dist/shell-files.d.ts +45 -0
  189. package/dist/shell-files.d.ts.map +1 -0
  190. package/dist/shell-files.js +105 -0
  191. package/dist/shell-files.js.map +1 -0
  192. package/dist/source-security.d.ts +10 -0
  193. package/dist/source-security.d.ts.map +1 -1
  194. package/dist/source-security.js +88 -1
  195. package/dist/source-security.js.map +1 -1
  196. package/dist/source-text.d.ts +2 -0
  197. package/dist/source-text.d.ts.map +1 -1
  198. package/dist/source-text.js +7 -16
  199. package/dist/source-text.js.map +1 -1
  200. package/dist/terraform-files.d.ts +29 -0
  201. package/dist/terraform-files.d.ts.map +1 -0
  202. package/dist/terraform-files.js +50 -0
  203. package/dist/terraform-files.js.map +1 -0
  204. package/dist/terraform-policy.d.ts +13 -0
  205. package/dist/terraform-policy.d.ts.map +1 -0
  206. package/dist/terraform-policy.js +261 -0
  207. package/dist/terraform-policy.js.map +1 -0
  208. package/dist/terraform-providers.d.ts +28 -0
  209. package/dist/terraform-providers.d.ts.map +1 -0
  210. package/dist/terraform-providers.js +68 -0
  211. package/dist/terraform-providers.js.map +1 -0
  212. package/dist/toolchain-pins.d.ts +1 -1
  213. package/dist/toolchain-pins.d.ts.map +1 -1
  214. package/dist/toolchain-pins.js +11 -21
  215. package/dist/toolchain-pins.js.map +1 -1
  216. package/dist/version-policy.d.ts +7 -8
  217. package/dist/version-policy.d.ts.map +1 -1
  218. package/dist/version-policy.js +15 -26
  219. package/dist/version-policy.js.map +1 -1
  220. package/dist/vulnerability-policy.d.ts.map +1 -1
  221. package/dist/vulnerability-policy.js +1 -11
  222. package/dist/vulnerability-policy.js.map +1 -1
  223. package/dist/wiring-policy.d.ts.map +1 -1
  224. package/dist/wiring-policy.js +4 -1
  225. package/dist/wiring-policy.js.map +1 -1
  226. package/dist/wiring-violation.d.ts.map +1 -1
  227. package/dist/wiring-violation.js +1 -6
  228. package/dist/wiring-violation.js.map +1 -1
  229. package/dist/workspace-policy.d.ts.map +1 -1
  230. package/dist/workspace-policy.js +3 -9
  231. package/dist/workspace-policy.js.map +1 -1
  232. package/dist/yaml-blocks.d.ts +10 -0
  233. package/dist/yaml-blocks.d.ts.map +1 -1
  234. package/dist/yaml-blocks.js +20 -0
  235. package/dist/yaml-blocks.js.map +1 -1
  236. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ import { AWS_CHECKS } from './checkov-checks-aws.js';
2
+ import { AZURE_CHECKS } from './checkov-checks-azure.js';
3
+ import { GOOGLE_CHECKS, SMALL_CLOUD_CHECKS } from './checkov-checks-google.js';
4
+ /** The checks enabled at error severity, each confirmed present in the pinned image. */
5
+ export const CHECKOV_CHECKS = [
6
+ ...AWS_CHECKS,
7
+ ...AZURE_CHECKS,
8
+ ...GOOGLE_CHECKS,
9
+ ...SMALL_CLOUD_CHECKS,
10
+ ];
11
+ /**
12
+ * The value of checkov's `--check` flag.
13
+ *
14
+ * Read from the catalogue rather than written out, so the list that runs and the list that carries the
15
+ * reasons cannot drift. An empty value would run EVERY check rather than none, which is why the spec
16
+ * beside this asserts the catalogue is not empty.
17
+ * @returns the enabled identifiers, comma separated.
18
+ */
19
+ export const checkovCheckList = () => CHECKOV_CHECKS.map((check) => check.id).join(',');
20
+ // The tally checkov prints after a scan. Its compact output spends several lines on each failed check
21
+ // and a few on headers, so counting lines would report defects that are not there.
22
+ const FAILED_CHECKS = /Failed checks: (?<count>\d+)/;
23
+ /**
24
+ * How many checks checkov reports as failed.
25
+ * @param output the analyzer's output for a scan that found at least one resource.
26
+ * @returns the tally, or undefined when the output carries none - which a caller treats as a run that
27
+ * did not complete rather than as a clean one.
28
+ */
29
+ export const failedCheckCount = (output) => {
30
+ const count = FAILED_CHECKS.exec(output)?.groups?.['count'];
31
+ return count === undefined ? undefined : Number(count);
32
+ };
33
+ /**
34
+ * The checks that can apply to a set of providers.
35
+ * @param providers provider names as the resource types spell them.
36
+ * @returns every enabled check bound to one of them.
37
+ */
38
+ export const checksFor = (providers) => CHECKOV_CHECKS.filter((check) => providers.includes(check.provider));
39
+ /**
40
+ * Every provider this harness knows to have no enabled check, and why. A provider on neither this map
41
+ * nor the catalogue is refused: the harness cannot tell whether the analyzer covers it and does not
42
+ * guess. The `unsupported` entries were confirmed absent from the pinned image with `--list`, and are
43
+ * re-confirmed when the pin moves.
44
+ */
45
+ export const PROVIDERS_WITHOUT_CHECKS = new Map([
46
+ // Declares no cloud resource, so there is nothing for an analyzer to judge.
47
+ ['random', 'utility'],
48
+ ['null', 'utility'],
49
+ ['local', 'utility'],
50
+ ['tls', 'utility'],
51
+ ['time', 'utility'],
52
+ ['archive', 'utility'],
53
+ ['external', 'utility'],
54
+ ['http', 'utility'],
55
+ ['template', 'utility'],
56
+ ['cloudinit', 'utility'],
57
+ ['terraform', 'utility'],
58
+ // The pinned image ships no check for these. A project on one of them is judged by the pattern
59
+ // rules alone, and the summary says so.
60
+ ['hcloud', 'unsupported'],
61
+ ['cloudflare', 'unsupported'],
62
+ ['vercel', 'unsupported'],
63
+ ['fly', 'unsupported'],
64
+ ['render', 'unsupported'],
65
+ ['scaleway', 'unsupported'],
66
+ ['ovh', 'unsupported'],
67
+ ['vultr', 'unsupported'],
68
+ ['upcloud', 'unsupported'],
69
+ ['exoscale', 'unsupported'],
70
+ ['mongodbatlas', 'unsupported'],
71
+ ['neon', 'unsupported'],
72
+ ['helm', 'unsupported'],
73
+ // Azure's sibling providers. `azapi` binds no check at all. `azuread` binds exactly one,
74
+ // `CKV_AZURE_249`, whose regular expression over an OIDC subject rejects a value that arrives through
75
+ // a variable - so it failed the rubric, and nothing is enabled for the provider.
76
+ ['azapi', 'unsupported'],
77
+ ['azuread', 'audited'],
78
+ ]);
79
+ /**
80
+ * The providers at least one enabled check binds to.
81
+ *
82
+ * Derived from the catalogue rather than declared beside it, so a cloud cannot be listed as curated
83
+ * with nothing enabled for it.
84
+ * @returns the provider names.
85
+ */
86
+ export const curatedProviders = () => new Set(CHECKOV_CHECKS.map((check) => check.provider));
87
+ const standingOf = (provider, curated) => curated.has(provider) ? 'curated' : (PROVIDERS_WITHOUT_CHECKS.get(provider) ?? 'unclassified');
88
+ /**
89
+ * Sort the providers a tree declares by what the gate does about each.
90
+ * @param detected provider names, in any order and with any repetition.
91
+ * @returns each provider once, in its standing, ordered so a report reads the same on every machine.
92
+ */
93
+ export const classifyProviders = (detected) => {
94
+ const curated = curatedProviders();
95
+ const unique = [...new Set(detected)].toSorted((left, right) => left.localeCompare(right));
96
+ const standing = (wanted) => unique.filter((provider) => standingOf(provider, curated) === wanted);
97
+ return {
98
+ curated: standing('curated'),
99
+ utility: standing('utility'),
100
+ unsupported: standing('unsupported'),
101
+ audited: standing('audited'),
102
+ unclassified: standing('unclassified'),
103
+ };
104
+ };
105
+ //# sourceMappingURL=checkov-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkov-policy.js","sourceRoot":"","sources":["../src/checkov-policy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"container-failure.d.ts","sourceRoot":"","sources":["../src/container-failure.ts"],"names":[],"mappings":"AAmBA,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GACjB,aAAa,CAAA;AAEjB,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAED,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,EAAE,MAAY,CAAA;AAyG5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,YAAY,YAAY,KACvB,aAAa,GAAG,SAalB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,YAAY,YAAY,KACvB,aAAa,GAAG,SAOlB,CAAA"}
1
+ {"version":3,"file":"container-failure.d.ts","sourceRoot":"","sources":["../src/container-failure.ts"],"names":[],"mappings":"AAEA,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,aAAa,GACb,iBAAiB,GACjB,aAAa,CAAA;AAEjB,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAED,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,EAAE,MAAY,CAAA;AAyG5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,YAAY,YAAY,KACvB,aAAa,GAAG,SAalB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,YAAY,YAAY,KACvB,aAAa,GAAG,SAOlB,CAAA"}
@@ -1,21 +1,4 @@
1
- // Why a containerised gate failed, told apart from what its analyzer reported.
2
- //
3
- // `docker run` passes the container's own exit code through, so a gate that reads every non-zero exit as
4
- // the tool's verdict reads a failure of Docker as a finding. The consequence was not cosmetic: a Docker
5
- // Hub pull-rate limit - 100 anonymous pulls per six hours per IP, which several teams behind one CI
6
- // egress reach - made the secret scan announce that it had found a secret in the git history. That is the
7
- // one verdict a project cannot dismiss on its own judgement, and the worst thing this harness can say. A
8
- // registry outage, an unreachable network, and a digest the registry no longer serves all landed the same
9
- // way.
10
- //
11
- // Two classifiers rather than one, and the split is the actual repair. `classifyImageFailure` reads
12
- // markers out of the output because it judges `docker image inspect` and `docker pull`, whose every byte
13
- // docker wrote. `classifyContainerExit` judges a run of the analyzer, whose output carries content the
14
- // PROJECT authored - a commit message, a Dockerfile, a workflow - so it reads the exit code and nothing
15
- // else. Matching `no such host` against a commit message would invert the same bug rather than fix it.
16
- //
17
- // The rules are pure so they are exercised against captured `docker` output rather than against a live
18
- // daemon: every branch below describes a failure that is expensive or impossible to stage on demand.
1
+ // Distinguish unavailable container infrastructure from analyzer findings so each failure names the right repair.
19
2
  /** The exit code a shell reports for a command it cannot find. */
20
3
  export const COMMAND_NOT_FOUND = 127;
21
4
  // `docker run` reserves these for a failure of docker itself, distinct from whatever the container exits
@@ -1 +1 @@
1
- {"version":3,"file":"container-failure.js","sourceRoot":"","sources":["../src/container-failure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-failure.js","sourceRoot":"","sources":["../src/container-failure.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,22 @@ export declare const isDockerfile: (file: string) => boolean;
17
17
  * @returns true when the file identifies a compose project.
18
18
  */
19
19
  export declare const isComposeFile: (file: string) => boolean;
20
+ /**
21
+ * Whether a tracked path is a GitHub Actions workflow.
22
+ * @param file the repo-relative path.
23
+ * @returns true for a YAML file directly under `.github/workflows`.
24
+ */
25
+ export declare const isWorkflowFile: (file: string) => boolean;
26
+ /**
27
+ * Every workflow the repository tracks.
28
+ *
29
+ * Discovered from the working tree rather than listed, for the reason `scripts/verify.sh` records about
30
+ * its own shell scripts: an enumeration is correct only at the moment it is written, and a workflow
31
+ * added later would be a workflow nothing reads.
32
+ * @param tracked the repo-relative paths of the tracked files.
33
+ * @returns the workflows, ordered so a report reads the same on every machine.
34
+ */
35
+ export declare const workflowsIn: (tracked: readonly string[]) => readonly string[];
20
36
  /**
21
37
  * Every Dockerfile the repository tracks.
22
38
  * @param tracked the repo-relative paths of the tracked files.
@@ -1 +1 @@
1
- {"version":3,"file":"container-files.d.ts","sourceRoot":"","sources":["../src/container-files.ts"],"names":[],"mappings":"AASA,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAqBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAuD,CAAA;AAMpG;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAGO,CAAA;AAEjF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,SAAS,cAAc,EAcrF,CAAA"}
1
+ {"version":3,"file":"container-files.d.ts","sourceRoot":"","sources":["../src/container-files.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAqBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAG3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAuD,CAAA;AASpG;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,OAG8B,CAAA;AAE5E;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAGS,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAGO,CAAA;AAEjF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,SAAS,cAAc,EAcrF,CAAA"}
@@ -1,11 +1,4 @@
1
- // Which files in a tracked tree are container definitions, and which directories hold a compose project.
2
- //
3
- // Discovery is stated here for both kinds at once, because stating it for only one is how the two halves
4
- // drifted. The Dockerfile half already walked the tracked tree - a project may keep a Dockerfile in any
5
- // directory, and a hard-coded path would silently skip the ones it did not anticipate - while the compose
6
- // half looked at the repository root and nowhere else. A Payload project that keeps its application in a
7
- // member directory keeps its compose file beside it, so the gate linted that member's Dockerfile and
8
- // reported a pass having validated no compose project at all.
1
+ // Identify container definitions and compose projects from the working-tree inventory.
9
2
  // Sliced rather than split, so neither helper carries a case that cannot happen. `lastIndexOf`
10
3
  // returns -1 for a bare basename, which makes these the whole string and the empty string - the two
11
4
  // answers a repository-root file wants - without a fallback no input could reach.
@@ -40,6 +33,28 @@ export const isComposeFile = (file) => COMPOSE_BASENAMES.includes(basenameOf(fil
40
33
  // Where a name sits in compose's own precedence. Only ever asked of a file `isComposeFile` accepted,
41
34
  // so the -1 `indexOf` returns for anything else is unreachable rather than meaningful.
42
35
  const precedenceOf = (file) => COMPOSE_BASENAMES.indexOf(basenameOf(file));
36
+ const WORKFLOW_DIRECTORY = '.github/workflows/';
37
+ const WORKFLOW_SUFFIXES = ['.yml', '.yaml'];
38
+ /**
39
+ * Whether a tracked path is a GitHub Actions workflow.
40
+ * @param file the repo-relative path.
41
+ * @returns true for a YAML file directly under `.github/workflows`.
42
+ */
43
+ export const isWorkflowFile = (file) => file.startsWith(WORKFLOW_DIRECTORY) &&
44
+ !file.slice(WORKFLOW_DIRECTORY.length).includes('/') &&
45
+ WORKFLOW_SUFFIXES.some((suffix) => file.endsWith(suffix));
46
+ /**
47
+ * Every workflow the repository tracks.
48
+ *
49
+ * Discovered from the working tree rather than listed, for the reason `scripts/verify.sh` records about
50
+ * its own shell scripts: an enumeration is correct only at the moment it is written, and a workflow
51
+ * added later would be a workflow nothing reads.
52
+ * @param tracked the repo-relative paths of the tracked files.
53
+ * @returns the workflows, ordered so a report reads the same on every machine.
54
+ */
55
+ export const workflowsIn = (tracked) => tracked
56
+ .filter((file) => isWorkflowFile(file))
57
+ .toSorted((left, right) => left.localeCompare(right));
43
58
  /**
44
59
  * Every Dockerfile the repository tracks.
45
60
  * @param tracked the repo-relative paths of the tracked files.
@@ -1 +1 @@
1
- {"version":3,"file":"container-files.js","sourceRoot":"","sources":["../src/container-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-files.js","sourceRoot":"","sources":["../src/container-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Join backslash-continued lines, so a `RUN` split across lines reads as the one command it is.
3
+ * @param text the file body.
4
+ * @returns one entry per logical line.
5
+ */
6
+ export declare const logicalLines: (text: string) => readonly string[];
7
+ /**
8
+ * The images a Dockerfile pulls: every `FROM` that names a registry image rather than an earlier stage.
9
+ * @param text the Dockerfile body.
10
+ * @returns the references in file order, with `ARG` defaults substituted.
11
+ */
12
+ export declare const imageReferencesInDockerfile: (text: string) => readonly string[];
13
+ /**
14
+ * The system packages a Dockerfile installs through the base image's package manager.
15
+ * @param text the Dockerfile body.
16
+ * @returns every package name after an install verb, in file order.
17
+ */
18
+ export declare const systemPackagesInDockerfile: (text: string) => readonly string[];
19
+ /**
20
+ * The images a GitHub Actions workflow pulls: service containers, job containers, and Docker actions.
21
+ * @param text the workflow body.
22
+ * @returns the references in file order.
23
+ */
24
+ export declare const imageReferencesInWorkflow: (text: string) => readonly string[];
25
+ /** One service of a compose model and the image it pulls. */
26
+ export interface ComposeImage {
27
+ readonly service: string;
28
+ readonly image: string;
29
+ }
30
+ /**
31
+ * The images a rendered compose model pulls. A service with a `build` is judged through its Dockerfile,
32
+ * and its `image` is only the name the build is tagged with.
33
+ * @param json the output of `docker compose config --format json`.
34
+ * @returns the pulled images by service name, or undefined when the text is not a compose model.
35
+ */
36
+ export declare const imageReferencesInComposeModel: (json: string) => readonly ComposeImage[] | undefined;
37
+ /**
38
+ * Whether a reference still carries a variable nothing substituted, so no rule can say what it pulls.
39
+ * @param reference the reference as read.
40
+ * @returns true when a `$` remains in it.
41
+ */
42
+ export declare const hasUnresolvedVariable: (reference: string) => boolean;
43
+ //# sourceMappingURL=container-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-images.d.ts","sourceRoot":"","sources":["../src/container-images.ts"],"names":[],"mappings":"AAuCA;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,SAAS,MAAM,EACX,CAAA;AAmEhD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,MAAM,MAAM,KAAG,SAAS,MAAM,EAK5D,CAAA;AAed;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,KAAG,SAAS,MAAM,EAQrE,CAAA;AASJ;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,KAAG,SAAS,MAAM,EAOlE,CAAA;AAEN,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,MAAM,KACX,SAAS,YAAY,EAAE,GAAG,SAc5B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,OAAkC,CAAA"}
@@ -0,0 +1,157 @@
1
+ // Where a repository names the container images it pulls, read into plain references.
2
+ //
3
+ // Three files name an image: a Dockerfile in its `FROM` lines, a workflow in the `image:` of a service
4
+ // or job container and in a `docker://` action, and a compose file in `services.*.image`. The compose
5
+ // half is read from the model `docker compose config --format json` renders rather than from the YAML,
6
+ // because compose interpolates `${VARIABLE}` from the `.env` beside the file and resolves the override
7
+ // files it merges, and a reader of the source text would judge a reference the daemon never pulls.
8
+ //
9
+ // The Dockerfile and workflow readers are line readers over a known syntax, in the spirit of
10
+ // `yaml-blocks.ts`: what has to be recognised is one keyword and the token after it.
11
+ import { asRecord, asText, isArray, isRecord, parseJsonc } from './json-shapes.js';
12
+ import { withoutQuotes } from './yaml-blocks.js';
13
+ const CONTINUATION = /\\\r?\n/g;
14
+ // A keyword, horizontal space, then a value that starts with a non-space: the value pattern cannot
15
+ // exchange characters with the space run before it, which is what keeps the match linear.
16
+ const FROM_LINE = /^[ \t]*FROM[ \t]+(?<rest>\S.*)$/i;
17
+ const ARG_LINE = /^[ \t]*ARG[ \t]+(?<name>[A-Z_]\w*)=(?<value>\S+)/i;
18
+ const RUN_LINE = /^[ \t]*RUN[ \t]+(?<rest>\S.*)$/i;
19
+ const COMMENT_LINE = /^[ \t]*#/;
20
+ // A base image every multi-stage build may start from that no registry serves.
21
+ const SCRATCH = 'scratch';
22
+ const STAGE_KEYWORD = 'as';
23
+ const PLATFORM_OPTION = '--';
24
+ // The install verbs of the package managers a base image ships. `apt-get install`, `apk add`, and the
25
+ // Red Hat family; pip and npm are language installs and judged elsewhere.
26
+ const INSTALL_VERB = /\b(?:apt-get|apt|apk|dnf|microdnf|yum|zypper)[ \t]+(?:install|add)\b/;
27
+ const COMMAND_SEPARATOR = /&&|\|\||;|\|/;
28
+ // What ends a package name in an install token: apt's `=version` and `/suite`, apk's `=version` and
29
+ // `~version`. dnf's `-version` is indistinguishable from a hyphenated name and is left alone.
30
+ const PACKAGE_NAME_END = /[=/~]/;
31
+ const OPTION_PREFIX = '-';
32
+ const WORKFLOW_IMAGE = /^[ \t]*(?:-[ \t]*)?image:[ \t]*(?<value>[^\s#][^#]*)/;
33
+ const WORKFLOW_CONTAINER = /^[ \t]*container:[ \t]*(?<value>[^\s#{]+)/;
34
+ const WORKFLOW_DOCKER_ACTION = /uses:[ \t]*['"]?docker:\/\/(?<value>[^\s'"]+)/;
35
+ /**
36
+ * Join backslash-continued lines, so a `RUN` split across lines reads as the one command it is.
37
+ * @param text the file body.
38
+ * @returns one entry per logical line.
39
+ */
40
+ export const logicalLines = (text) => text.replaceAll(CONTINUATION, ' ').split('\n');
41
+ const contentLines = (text) => logicalLines(text).filter((line) => !COMMENT_LINE.test(line));
42
+ const readFrom = (rest) => {
43
+ const tokens = (rest ?? '')
44
+ .trim()
45
+ .split(/[ \t]+/)
46
+ .filter((token) => !token.startsWith(PLATFORM_OPTION));
47
+ const [first, keyword, stage] = tokens;
48
+ const reference = first ?? '';
49
+ if (reference.length === 0) {
50
+ return undefined;
51
+ }
52
+ return { reference, stage: keyword?.toLowerCase() === STAGE_KEYWORD ? stage : undefined };
53
+ };
54
+ // `FROM node:${NODE_VERSION}` is the common way to state a version once, and the ARG that gives it a
55
+ // default is the only place the value lives. Both spellings of a reference are substituted; an ARG with
56
+ // no default leaves the variable in place, and the rule reports it as a reference it cannot judge.
57
+ const substituteArguments = (reference, defaults) => [...defaults].reduce((resolved, [name, value]) => resolved
58
+ .replaceAll(`\${${name}}`, () => value)
59
+ .replaceAll(`$${name}`, () => value), reference);
60
+ const recordArgument = (walk, line) => {
61
+ const found = ARG_LINE.exec(line);
62
+ if (found?.groups === undefined) {
63
+ return undefined;
64
+ }
65
+ const defaults = new Map([
66
+ ...walk.defaults,
67
+ [found.groups['name'] ?? '', withoutQuotes(found.groups['value'] ?? '')],
68
+ ]);
69
+ return { ...walk, defaults };
70
+ };
71
+ const recordFrom = (walk, line) => {
72
+ const from = readFrom(FROM_LINE.exec(line)?.groups?.['rest']);
73
+ if (from === undefined) {
74
+ return walk;
75
+ }
76
+ const reference = substituteArguments(from.reference, walk.defaults);
77
+ const isRegistryImage = reference !== SCRATCH && !walk.stages.has(reference);
78
+ return {
79
+ defaults: walk.defaults,
80
+ stages: from.stage === undefined ? walk.stages : new Set([...walk.stages, from.stage]),
81
+ references: isRegistryImage ? [...walk.references, reference] : walk.references,
82
+ };
83
+ };
84
+ /**
85
+ * The images a Dockerfile pulls: every `FROM` that names a registry image rather than an earlier stage.
86
+ * @param text the Dockerfile body.
87
+ * @returns the references in file order, with `ARG` defaults substituted.
88
+ */
89
+ export const imageReferencesInDockerfile = (text) => contentLines(text).reduce((walk, line) => recordArgument(walk, line) ?? recordFrom(walk, line), { defaults: new Map(), stages: new Set(), references: [] }).references;
90
+ const packagesInCommand = (command) => {
91
+ const verb = INSTALL_VERB.exec(command);
92
+ if (verb === null) {
93
+ return [];
94
+ }
95
+ return command
96
+ .slice(verb.index + verb[0].length)
97
+ .trim()
98
+ .split(/[ \t]+/)
99
+ .filter((token) => token.length > 0 && !token.startsWith(OPTION_PREFIX))
100
+ .map((token) => token.split(PACKAGE_NAME_END)[0] ?? '');
101
+ };
102
+ /**
103
+ * The system packages a Dockerfile installs through the base image's package manager.
104
+ * @param text the Dockerfile body.
105
+ * @returns every package name after an install verb, in file order.
106
+ */
107
+ export const systemPackagesInDockerfile = (text) => contentLines(text).flatMap((line) => {
108
+ const rest = RUN_LINE.exec(line)?.groups?.['rest'];
109
+ return rest === undefined
110
+ ? []
111
+ : rest
112
+ .split(COMMAND_SEPARATOR)
113
+ .flatMap((command) => packagesInCommand(command));
114
+ });
115
+ const workflowReferenceIn = (line) => {
116
+ const found = WORKFLOW_DOCKER_ACTION.exec(line) ?? WORKFLOW_IMAGE.exec(line) ?? WORKFLOW_CONTAINER.exec(line);
117
+ const value = found?.groups?.['value'];
118
+ return value === undefined ? undefined : withoutQuotes(value.trim());
119
+ };
120
+ /**
121
+ * The images a GitHub Actions workflow pulls: service containers, job containers, and Docker actions.
122
+ * @param text the workflow body.
123
+ * @returns the references in file order.
124
+ */
125
+ export const imageReferencesInWorkflow = (text) => text
126
+ .split('\n')
127
+ .filter((line) => !COMMENT_LINE.test(line))
128
+ .flatMap((line) => {
129
+ const reference = workflowReferenceIn(line);
130
+ return reference === undefined || reference.length === 0 ? [] : [reference];
131
+ });
132
+ /**
133
+ * The images a rendered compose model pulls. A service with a `build` is judged through its Dockerfile,
134
+ * and its `image` is only the name the build is tagged with.
135
+ * @param json the output of `docker compose config --format json`.
136
+ * @returns the pulled images by service name, or undefined when the text is not a compose model.
137
+ */
138
+ export const imageReferencesInComposeModel = (json) => {
139
+ const model = parseJsonc(json).value;
140
+ if (!isRecord(model) || isArray(model) || !isRecord(model['services'])) {
141
+ return undefined;
142
+ }
143
+ return Object.entries(model['services'])
144
+ .flatMap(([service, definition]) => {
145
+ const image = asText(asRecord(definition)['image']);
146
+ const isBuilt = asRecord(definition)['build'] !== undefined;
147
+ return isBuilt || image.length === 0 ? [] : [{ service, image }];
148
+ })
149
+ .toSorted((one, other) => one.service.localeCompare(other.service));
150
+ };
151
+ /**
152
+ * Whether a reference still carries a variable nothing substituted, so no rule can say what it pulls.
153
+ * @param reference the reference as read.
154
+ * @returns true when a `$` remains in it.
155
+ */
156
+ export const hasUnresolvedVariable = (reference) => reference.includes('$');
157
+ //# sourceMappingURL=container-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-images.js","sourceRoot":"","sources":["../src/container-images.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,14 @@ export interface DeclaredCoordinate {
53
53
  export interface DependencyStatus extends DeclaredCoordinate {
54
54
  /** The latest version published to the registry. */
55
55
  readonly latest: string;
56
+ /**
57
+ * The licence the registry records for that latest version, when it records one.
58
+ *
59
+ * Carried so the blocklist can keep the bound from demanding an upgrade into a release the licence
60
+ * gate would refuse: a package that changed licence at its newest major is still measured, but never
61
+ * past the last release a project may install.
62
+ */
63
+ readonly latestLicense?: string;
56
64
  }
57
65
  /** One parsed manifest, with the path a finding will name. */
58
66
  export interface ManifestSource {
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-freshness.d.ts","sourceRoot":"","sources":["../src/dependency-freshness.ts"],"names":[],"mappings":"AAqBA,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEvD,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,EAAE,MAAU,CAAA;AAE7C,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAQD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAW1D,CAAA;AA0BD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,gBAUnE,CAAA;AAED,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAClF,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAA;CACjD;AA6BD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,GAAG,SAAS,EACzB,UAAU,gBAAgB,KACzB,SAAS,MAAM,EACkE,CAAA;AAEpF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,cAAc,EAAE,KACnC,SAAS,kBAAkB,EAU3B,CAAA;AAEH,gGAAgG;AAChG,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAA;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAYD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,SAAS,gBAAgB,EAAE,KAAG,eAiB/E,CAAA"}
1
+ {"version":3,"file":"dependency-freshness.d.ts","sourceRoot":"","sources":["../src/dependency-freshness.ts"],"names":[],"mappings":"AAKA,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEvD,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,EAAE,MAAU,CAAA;AAE7C,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAQD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAW1D,CAAA;AA0BD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,gBAUnE,CAAA;AAED,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAClF,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAA;CACjD;AA6BD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,GAAG,SAAS,EACzB,UAAU,gBAAgB,KACzB,SAAS,MAAM,EACkE,CAAA;AAEpF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,cAAc,EAAE,KACnC,SAAS,kBAAkB,EAU3B,CAAA;AAEH,gGAAgG;AAChG,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAA;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAYD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,SAAS,gBAAgB,EAAE,KAAG,eAiB/E,CAAA"}
@@ -1,22 +1,6 @@
1
- // Dependency-freshness policy: the pure, unit-tested logic that reads the coordinates a repository
2
- // declares and classifies how far each has drifted from its latest published release. The `deps` gate in
3
- // packages/cli/src/checks/dependencies.ts reads the manifests and asks the registry.
4
- //
5
- // Policy: a declared dependency (transitive deps never count) whose current major version is
6
- // MAJOR_FAIL_THRESHOLD or more behind the latest published major FAILS the build; any lesser lag (a
7
- // single major behind, or a minor/patch behind) appears in the non-failing update report. The Biome config `$schema`
8
- // URL version is fed through the same classifier as a pseudo-dependency. There is no exemption list:
9
- // every declared dependency is MEASURED against the same bar, so a deliberately old pin that falls two
10
- // majors behind must be bumped or the pin dropped.
11
- //
12
- // One thing the bar does not decide is who the build stops. A coordinate an INHERITED manifest declares
13
- // is measured identically and reported at its real verdict, and it never fails the build: the version
14
- // belongs to ploaness, the project has no file in which to change it, and a gate that stopped every
15
- // consumer at once over a pin none of them can edit would be reporting ploaness's defect as theirs.
16
- // That is a statement about whose repair it is rather than an exemption from the measurement, which is
17
- // why the verdict survives into the report instead of being softened into an ordinary update.
1
+ // Compare declared coordinates with stable releases and apply the fixed major-version freshness bound.
2
+ import { isHarnessPackage } from './harness-package.js';
18
3
  import { declaredDependencies } from './json-shapes.js';
19
- import { isHarnessPackage } from './version-policy.js';
20
4
  /** Major-version gap (`latest.major - current.major`) at or above which the gate FAILS the build. */
21
5
  export const MAJOR_FAIL_THRESHOLD = 2;
22
6
  // A leading range operator (`^ ~ >= <= = v`) or whitespace is tolerated, then the numeric core is
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-freshness.js","sourceRoot":"","sources":["../src/dependency-freshness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-freshness.js","sourceRoot":"","sources":["../src/dependency-freshness.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doc-blocks.d.ts","sourceRoot":"","sources":["../src/doc-blocks.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAQlD,CAAA;AAWD,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAkDD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,SAAS,QAAQ,EAKrE,CAAA"}
1
+ {"version":3,"file":"doc-blocks.d.ts","sourceRoot":"","sources":["../src/doc-blocks.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAQlD,CAAA;AAWD,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAkDD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,SAAS,QAAQ,EAKrE,CAAA"}
@@ -1,16 +1,4 @@
1
- // Orphaned documenting comments: a `/** ... */` block whose next non-blank line opens ANOTHER such
2
- // block, so the first documents nothing and the symbol it was written for carries no doc at all.
3
- //
4
- // This cannot be an eslint-plugin-jsdoc rule, and the reason is structural rather than a gap in that
5
- // plugin. Every rule it ships visits the block ATTACHED to a syntax node, and an orphan is attached to
6
- // nothing: the parser hands a declaration only the LAST block comment before it and discards the
7
- // earlier ones as leading trivia. The defect is invisible to the one analyzer that exists for
8
- // documenting comments, which is why it is a text rule here - the text is the only place it is still
9
- // visible.
10
- //
11
- // It is a real class rather than a hypothetical. Four instances were found in this repository the
12
- // first time anything looked, each one a doc that had been moved above the wrong symbol and left
13
- // there, and each one carried the description of a symbol that was then undocumented.
1
+ // Report documenting blocks detached from a declaration by another documenting block.
14
2
  // Extensions whose comment syntax this rule understands. A stylesheet shares the delimiters but has
15
3
  // no JSDoc, so two adjacent blocks there are two comments rather than one orphan - which is why this
16
4
  // list is narrower than CODE_EXTENSIONS.
@@ -1 +1 @@
1
- {"version":3,"file":"doc-blocks.js","sourceRoot":"","sources":["../src/doc-blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc-blocks.js","sourceRoot":"","sources":["../src/doc-blocks.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ export interface EditorconfigViolation {
13
13
  readonly reason: string;
14
14
  }
15
15
  export declare const parseEditorconfig: (text: string) => EditorconfigRules;
16
+ /**
17
+ * Decide whether the standard's line cap binds for one file.
18
+ * @param filePath the repo-relative path.
19
+ * @param generatedArtefacts the globs the project declares generated.
20
+ * @returns true for an authored code file; false for prose and for generated output.
21
+ */
22
+ export declare const isLineCapEnforced: (filePath: string, generatedArtefacts: readonly string[]) => boolean;
16
23
  /**
17
24
  * Check one file against the committed configuration.
18
25
  * @param content the file's decoded content.
@@ -1 +1 @@
1
- {"version":3,"file":"editorconfig-policy.d.ts","sourceRoot":"","sources":["../src/editorconfig-policy.ts"],"names":[],"mappings":"AAaA,wEAAwE;AACxE,eAAO,MAAM,eAAe,EAAE,MAAY,CAAA;AAE1C,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAA;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA8BD,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,iBAqBhD,CAAA;AA2CD;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,OAAO,iBAAiB,EACxB,sBAAsB,OAAO,KAC5B,SAAS,qBAAqB,EAgBhC,CAAA"}
1
+ {"version":3,"file":"editorconfig-policy.d.ts","sourceRoot":"","sources":["../src/editorconfig-policy.ts"],"names":[],"mappings":"AAIA,wEAAwE;AACxE,eAAO,MAAM,eAAe,EAAE,MAAY,CAAA;AAE1C,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAA;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA8BD,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,iBAqBhD,CAAA;AA2CD;;;;;GAKG;AAUH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,oBAAoB,SAAS,MAAM,EAAE,KACpC,OAEqF,CAAA;AAExF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,OAAO,iBAAiB,EACxB,sBAAsB,OAAO,KAC5B,SAAS,qBAAqB,EAgBhC,CAAA"}