@produtype/core 1.26.0 → 1.26.1

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.
@@ -431,6 +431,8 @@ function buildReport(analysis, options) {
431
431
  * presented with the same confidence.
432
432
  */
433
433
  readingDepth: (0, readingDepth_1.readingDepths)(analysis.files.source, analysis.files.unreadable, analysis.parsedStructure),
434
+ routeNamesUnread: analysis.detectors['auth.core']?.present === true
435
+ && analysis.detectors['auth.routesAreReadable']?.present === false,
434
436
  parsedStructure: analysis.parsedStructure,
435
437
  detectors: detectorDiagnostics(analysis),
436
438
  selectedProfile: requestedProfile,
@@ -278,6 +278,18 @@ function renderMarkdown(report) {
278
278
  ...((0, readingDepth_1.describeReadingDepth)(report.diagnostics.readingDepth, report.diagnostics.parsedStructure)
279
279
  ? [`- ${(0, readingDepth_1.describeReadingDepth)(report.diagnostics.readingDepth, report.diagnostics.parsedStructure)}`]
280
280
  : []),
281
+ /**
282
+ * A vocabulary this could not read, said out loud.
283
+ *
284
+ * Four capabilities are found by the English words their routes are usually
285
+ * given. Where a project authenticates and no route name was ever read, those
286
+ * questions go unanswered rather than answered wrongly — and a reader whose
287
+ * routes are `/accedi` and `/recupero-password` is entitled to know that is what
288
+ * happened, instead of finding four questions quietly absent.
289
+ */
290
+ ...(report.diagnostics.routeNamesUnread
291
+ ? ['- No route name in this repository matched /login, /register or /signin, so password reset, email verification, personal data export and erasure were not assessed: those are found by the words a route is given, and this project gives them others.']
292
+ : []),
281
293
  `- Expectation mode: ${report.diagnostics.expectationMode}`,
282
294
  `- ProdKit version: ${report.diagnostics.prodkitVersion}`,
283
295
  `- Detector diagnostics: ${report.diagnostics.detectors.filter((d) => d.status === 'completed').length} completed / ${report.diagnostics.detectors.filter((d) => d.status === 'skipped').length} skipped`,
@@ -74,6 +74,19 @@ export interface ReportDiagnostics {
74
74
  * fact, and the reader is entitled to know which one they have.
75
75
  */
76
76
  readingDepth: LanguageReading[];
77
+ /**
78
+ * Whether a route name was ever read in this project, where it authenticates.
79
+ *
80
+ * Four capabilities — password reset, email verification, personal data export and
81
+ * erasure — are found by the English words their routes are usually given. Where
82
+ * none of `/login`, `/register` or `/signin` ever matched, those searches could not
83
+ * reach this project's vocabulary and answer `unknown` instead of `missing`.
84
+ *
85
+ * Withdrawing the claim silently would be its own failure: the reader of a project
86
+ * whose routes are `/accedi` and `/recupero-password` would see four questions
87
+ * simply absent, with nothing saying why. This is what the report says instead.
88
+ */
89
+ routeNamesUnread: boolean;
77
90
  /**
78
91
  * Whether the optional TypeScript compiler was loaded for this reading.
79
92
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@produtype/core",
3
- "version": "1.26.0",
3
+ "version": "1.26.1",
4
4
  "description": "Deterministic CLI and library that analyzes a web application repository and reports how far it is from production-ready for the kind of product it is meant to be.",
5
5
  "license": "MIT",
6
6
  "bin": {