@produtype/core 0.76.0 → 0.77.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.
|
@@ -354,6 +354,17 @@ async function detectMobile(ctx) {
|
|
|
354
354
|
{
|
|
355
355
|
key: 'mobile.privacyDeclaration',
|
|
356
356
|
present: privacyFiles.length > 0,
|
|
357
|
+
/**
|
|
358
|
+
* On Android the declaration is not in the repository, and never was.
|
|
359
|
+
*
|
|
360
|
+
* Apple has required `PrivacyInfo.xcprivacy` in the bundle since 2024, so an iOS
|
|
361
|
+
* project either has the file or has not made the declaration. Play's data-safety
|
|
362
|
+
* form is filled in the console: there is no committed artifact to find, and no
|
|
363
|
+
* convention that puts one in the tree. thunderbird-android was told it was
|
|
364
|
+
* missing a file it has no way to have — a question this analyzer cannot ask
|
|
365
|
+
* rather than an answer of no.
|
|
366
|
+
*/
|
|
367
|
+
unanswered: privacyFiles.length === 0 && !platforms.includes('ios'),
|
|
357
368
|
evidence: (0, absenceEvidence_1.evidenceOrSearch)(privacyFiles.map((file) => ({ type: 'file', value: file, file })), 'the privacy declaration the stores require', ['PrivacyInfo.xcprivacy', 'a data-safety declaration', 'privacy_policy', 'PRIVACY.md']),
|
|
358
369
|
},
|
|
359
370
|
];
|
|
@@ -224,6 +224,16 @@ function deriveStatus(analysis, capability) {
|
|
|
224
224
|
return 'present';
|
|
225
225
|
if (matches.some((m) => m.present))
|
|
226
226
|
return 'partial';
|
|
227
|
+
/**
|
|
228
|
+
* Nothing found, and at least one detector says it could not look.
|
|
229
|
+
*
|
|
230
|
+
* The specific rules in `rules.ts` grew this in 0.74.0 one claim at a time; this
|
|
231
|
+
* is the same rule for every capability that reaches the generic path. A finding
|
|
232
|
+
* is only ever weakened by it: `present` and `partial` are decided above, so
|
|
233
|
+
* blindness can turn `missing` into `unknown` and nothing else.
|
|
234
|
+
*/
|
|
235
|
+
if (matches.some((m) => m.unanswered))
|
|
236
|
+
return 'unknown';
|
|
227
237
|
return 'missing';
|
|
228
238
|
}
|
|
229
239
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@produtype/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.77.0",
|
|
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": {
|