shiplint 1.2.0 → 1.4.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 (80) hide show
  1. package/dist/cli/index.js +1 -0
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/core/scanner.d.ts.map +1 -1
  4. package/dist/core/scanner.js +5 -1
  5. package/dist/core/scanner.js.map +1 -1
  6. package/dist/core/suppression.d.ts +23 -0
  7. package/dist/core/suppression.d.ts.map +1 -0
  8. package/dist/core/suppression.js +183 -0
  9. package/dist/core/suppression.js.map +1 -0
  10. package/dist/formatters/text.d.ts +1 -0
  11. package/dist/formatters/text.d.ts.map +1 -1
  12. package/dist/formatters/text.js +92 -15
  13. package/dist/formatters/text.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +5 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/parsers/pbxproj-parser.d.ts.map +1 -1
  19. package/dist/parsers/pbxproj-parser.js +53 -9
  20. package/dist/parsers/pbxproj-parser.js.map +1 -1
  21. package/dist/parsers/plist-parser.d.ts.map +1 -1
  22. package/dist/parsers/plist-parser.js +15 -10
  23. package/dist/parsers/plist-parser.js.map +1 -1
  24. package/dist/parsers/project-parser.d.ts.map +1 -1
  25. package/dist/parsers/project-parser.js +119 -9
  26. package/dist/parsers/project-parser.js.map +1 -1
  27. package/dist/rules/base.d.ts +2 -0
  28. package/dist/rules/base.d.ts.map +1 -1
  29. package/dist/rules/base.js +2 -0
  30. package/dist/rules/base.js.map +1 -1
  31. package/dist/rules/code/dynamic-code-execution.d.ts +13 -0
  32. package/dist/rules/code/dynamic-code-execution.d.ts.map +1 -0
  33. package/dist/rules/code/dynamic-code-execution.js +212 -0
  34. package/dist/rules/code/dynamic-code-execution.js.map +1 -0
  35. package/dist/rules/code/index.d.ts +6 -0
  36. package/dist/rules/code/index.d.ts.map +1 -0
  37. package/dist/rules/code/index.js +11 -0
  38. package/dist/rules/code/index.js.map +1 -0
  39. package/dist/rules/code/private-api-usage.d.ts +12 -0
  40. package/dist/rules/code/private-api-usage.d.ts.map +1 -0
  41. package/dist/rules/code/private-api-usage.js +234 -0
  42. package/dist/rules/code/private-api-usage.js.map +1 -0
  43. package/dist/rules/config/missing-launch-storyboard.d.ts.map +1 -1
  44. package/dist/rules/config/missing-launch-storyboard.js +19 -5
  45. package/dist/rules/config/missing-launch-storyboard.js.map +1 -1
  46. package/dist/rules/index.d.ts +1 -0
  47. package/dist/rules/index.d.ts.map +1 -1
  48. package/dist/rules/index.js +6 -0
  49. package/dist/rules/index.js.map +1 -1
  50. package/dist/rules/metadata/missing-supported-orientations.d.ts.map +1 -1
  51. package/dist/rules/metadata/missing-supported-orientations.js +11 -2
  52. package/dist/rules/metadata/missing-supported-orientations.js.map +1 -1
  53. package/dist/rules/privacy/att-tracking-mismatch.d.ts.map +1 -1
  54. package/dist/rules/privacy/att-tracking-mismatch.js +16 -0
  55. package/dist/rules/privacy/att-tracking-mismatch.js.map +1 -1
  56. package/dist/rules/privacy/missing-bluetooth-purpose.d.ts.map +1 -1
  57. package/dist/rules/privacy/missing-bluetooth-purpose.js +4 -0
  58. package/dist/rules/privacy/missing-bluetooth-purpose.js.map +1 -1
  59. package/dist/rules/privacy/missing-camera-purpose.d.ts.map +1 -1
  60. package/dist/rules/privacy/missing-camera-purpose.js +4 -0
  61. package/dist/rules/privacy/missing-camera-purpose.js.map +1 -1
  62. package/dist/rules/privacy/missing-contacts-purpose.d.ts.map +1 -1
  63. package/dist/rules/privacy/missing-contacts-purpose.js +4 -0
  64. package/dist/rules/privacy/missing-contacts-purpose.js.map +1 -1
  65. package/dist/rules/privacy/missing-face-id-purpose.d.ts.map +1 -1
  66. package/dist/rules/privacy/missing-face-id-purpose.js +4 -0
  67. package/dist/rules/privacy/missing-face-id-purpose.js.map +1 -1
  68. package/dist/rules/privacy/missing-location-purpose.d.ts.map +1 -1
  69. package/dist/rules/privacy/missing-location-purpose.js +4 -0
  70. package/dist/rules/privacy/missing-location-purpose.js.map +1 -1
  71. package/dist/rules/privacy/missing-microphone-purpose.d.ts.map +1 -1
  72. package/dist/rules/privacy/missing-microphone-purpose.js +4 -0
  73. package/dist/rules/privacy/missing-microphone-purpose.js.map +1 -1
  74. package/dist/rules/privacy/missing-photo-library-purpose.d.ts.map +1 -1
  75. package/dist/rules/privacy/missing-photo-library-purpose.js +9 -3
  76. package/dist/rules/privacy/missing-photo-library-purpose.js.map +1 -1
  77. package/dist/types/index.d.ts +12 -0
  78. package/dist/types/index.d.ts.map +1 -1
  79. package/dist/types/index.js.map +1 -1
  80. package/package.json +1 -1
@@ -16,9 +16,18 @@ exports.MissingSupportedOrientationsRule = {
16
16
  if (context.isExtension()) {
17
17
  return [];
18
18
  }
19
+ // macOS apps don't use UISupportedInterfaceOrientations
20
+ if (context.isMacOSOnly()) {
21
+ return [];
22
+ }
23
+ // Framework/library targets don't need orientation declarations
24
+ if (context.isFrameworkTarget()) {
25
+ return [];
26
+ }
19
27
  const orientations = context.plistArray('UISupportedInterfaceOrientations');
20
- // Modern Xcode projects (14+) with GENERATE_INFOPLIST_FILE = YES use build settings
21
- if (orientations === undefined && context.generatesInfoPlist()) {
28
+ // Modern Xcode projects (14+) use build settings for orientations
29
+ // Check regardless of GENERATE_INFOPLIST_FILE
30
+ if (orientations === undefined) {
22
31
  if (context.hasBuildSetting('INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone') ||
23
32
  context.hasBuildSetting('INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad') ||
24
33
  context.hasBuildSetting('INFOPLIST_KEY_UISupportedInterfaceOrientations')) {
@@ -1 +1 @@
1
- {"version":3,"file":"missing-supported-orientations.js","sourceRoot":"","sources":["../../../src/rules/metadata/missing-supported-orientations.ts"],"names":[],"mappings":";;;AAUA,mDAA0E;AAC1E,wCAAyC;AAE5B,QAAA,gCAAgC,GAAS;IACpD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,mEAAmE;IAChF,QAAQ,EAAE,uBAAY,CAAC,QAAQ;IAC/B,QAAQ,EAAE,mBAAQ,CAAC,MAAM;IACzB,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,KAAK;IAEzB,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qDAAqD;QACrD,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;QAE5E,oFAAoF;QACpF,IAAI,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,eAAe,CAAC,uDAAuD,CAAC;gBAChF,OAAO,CAAC,eAAe,CAAC,qDAAqD,CAAC;gBAC9E,OAAO,CAAC,eAAe,CAAC,gDAAgD,CAAC,EAAE,CAAC;gBAC9E,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,uEAAuE;wBAClF,kFAAkF;wBAClF,qFAAqF;wBACrF,oFAAoF;oBACtF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,gFAAgF;wBAC3F;;;;;;;;;;;;;2EAa+D;wBAC/D,6EAA6E;oBAC/E,gBAAgB,EAAE,sHAAsH;iBACzI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,8BAA8B;oBACrC,WAAW,EAAE,+EAA+E;wBAC1F,2DAA2D;oBAC7D,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE;;;;;;;oEAO6C;oBAC1D,gBAAgB,EAAE,sHAAsH;iBACzI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"missing-supported-orientations.js","sourceRoot":"","sources":["../../../src/rules/metadata/missing-supported-orientations.ts"],"names":[],"mappings":";;;AAUA,mDAA0E;AAC1E,wCAAyC;AAE5B,QAAA,gCAAgC,GAAS;IACpD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,mEAAmE;IAChF,QAAQ,EAAE,uBAAY,CAAC,QAAQ;IAC/B,QAAQ,EAAE,mBAAQ,CAAC,MAAM;IACzB,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,KAAK;IAEzB,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qDAAqD;QACrD,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gEAAgE;QAChE,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;QAE5E,kEAAkE;QAClE,8CAA8C;QAC9C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,eAAe,CAAC,uDAAuD,CAAC;gBAChF,OAAO,CAAC,eAAe,CAAC,qDAAqD,CAAC;gBAC9E,OAAO,CAAC,eAAe,CAAC,gDAAgD,CAAC,EAAE,CAAC;gBAC9E,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,uEAAuE;wBAClF,kFAAkF;wBAClF,qFAAqF;wBACrF,oFAAoF;oBACtF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,gFAAgF;wBAC3F;;;;;;;;;;;;;2EAa+D;wBAC/D,6EAA6E;oBAC/E,gBAAgB,EAAE,sHAAsH;iBACzI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,8BAA8B;oBACrC,WAAW,EAAE,+EAA+E;wBAC1F,2DAA2D;oBAC7D,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE;;;;;;;oEAO6C;oBAC1D,gBAAgB,EAAE,sHAAsH;iBACzI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"att-tracking-mismatch.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/att-tracking-mismatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AASvE,eAAO,MAAM,uBAAuB,EAAE,IA6GrC,CAAC"}
1
+ {"version":3,"file":"att-tracking-mismatch.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/att-tracking-mismatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AASvE,eAAO,MAAM,uBAAuB,EAAE,IA+HrC,CAAC"}
@@ -18,6 +18,22 @@ exports.ATTTrackingMismatchRule = {
18
18
  async evaluate(context) {
19
19
  // Detect tracking SDKs from dependencies
20
20
  const detectedSDKs = (0, framework_detector_js_1.detectTrackingSDKs)(context.dependencies);
21
+ // Also detect from linked frameworks / Swift imports
22
+ const trackingFrameworkMap = {
23
+ 'AdSupport': 'AdSupport (IDFA)',
24
+ 'FBSDKCoreKit': 'Facebook SDK',
25
+ 'FacebookCore': 'Facebook SDK',
26
+ 'FBAudienceNetwork': 'Facebook Audience Network',
27
+ 'GoogleMobileAds': 'Google Mobile Ads',
28
+ 'FirebaseAnalytics': 'Firebase Analytics',
29
+ 'Adjust': 'Adjust',
30
+ 'AppsFlyerLib': 'AppsFlyer',
31
+ };
32
+ for (const [framework, name] of Object.entries(trackingFrameworkMap)) {
33
+ if (context.hasFramework(framework) && !detectedSDKs.includes(name)) {
34
+ detectedSDKs.push(name);
35
+ }
36
+ }
21
37
  if (detectedSDKs.length === 0) {
22
38
  return [];
23
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"att-tracking-mismatch.js","sourceRoot":"","sources":["../../../src/rules/privacy/att-tracking-mismatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"att-tracking-mismatch.js","sourceRoot":"","sources":["../../../src/rules/privacy/att-tracking-mismatch.ts"],"names":[],"mappings":";;;AAUA,mDAA0E;AAC1E,mEAA8D;AAC9D,+EAAyE;AACzE,wCAA4D;AAE5D,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AAC5D,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEnC,QAAA,uBAAuB,GAAS;IAC3C,EAAE,EAAE,mCAAmC;IACvC,IAAI,EAAE,gDAAgD;IACtD,WAAW,EAAE,4DAA4D;IACzE,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,yCAAyC;QACzC,MAAM,YAAY,GAAG,IAAA,0CAAkB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE9D,qDAAqD;QACrD,MAAM,oBAAoB,GAA2B;YACnD,WAAW,EAAE,kBAAkB;YAC/B,cAAc,EAAE,cAAc;YAC9B,cAAc,EAAE,cAAc;YAC9B,mBAAmB,EAAE,2BAA2B;YAChD,iBAAiB,EAAE,mBAAmB;YACtC,mBAAmB,EAAE,oBAAoB;YACzC,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,WAAW;SAC5B,CAAC;QAEF,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACrE,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACpE,MAAM,sBAAsB,GAAG,mBAAmB,KAAK,SAAS,CAAC;QACjE,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAE5D,0DAA0D;QAC1D,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,IAAI,EAAE;gBAC9B,WAAW,EAAE,gDAAgD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACtF,4FAA4F;oBAC5F,8EAA8E;gBAChF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;gBAC/C,WAAW,EAAE;;;;;;;;;;;;;;;;;;2EAkBsD;gBACnE,gBAAgB,EAAE,mEAAmE;aACtF,CAAC,CAAC,CAAC;QACN,CAAC;QACD,+BAA+B;aAC1B,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,IAAI,EAAE;gBAC9B,KAAK,EAAE,kCAAkC;gBACzC,WAAW,EAAE,kFAAkF;oBAC7F,mDAAmD;gBACrD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;gBAC/C,WAAW,EAAE;;;;;4DAKuC;gBACpD,gBAAgB,EAAE,mEAAmE;aACtF,CAAC,CAAC,CAAC;QACN,CAAC;QACD,qCAAqC;aAChC,IAAI,IAAA,+BAAa,EAAC,mBAAmB,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,IAAI,EAAE;gBAC9B,KAAK,EAAE,wCAAwC;gBAC/C,WAAW,EAAE,wEAAwE,mBAAmB,KAAK;oBAC3G,sDAAsD;gBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;gBAC/C,WAAW,EAAE;;kBAEH,mBAAmB;;+DAE0B;gBACvD,gBAAgB,EAAE,mEAAmE;aACtF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,+CAA+C;QAC/C,IAAI,sBAAsB,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,IAAA,2BAAiB,EAAC,IAAI,EAAE,mBAAQ,CAAC,MAAM,EAAE,qBAAU,CAAC,MAAM,EAAE;gBACxE,KAAK,EAAE,8CAA8C;gBACrD,WAAW,EAAE,oFAAoF;oBAC/F,mFAAmF;gBACrF,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,iBAAiB;gBAClD,WAAW,EAAE,oFAAoF;oBAC/F;;;;;;;;;yFAS+E;oBAC/E,8BAA8B;gBAChC,gBAAgB,EAAE,mEAAmE;aACtF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-bluetooth-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-bluetooth-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAOvE,eAAO,MAAM,2BAA2B,EAAE,IA8EzC,CAAC"}
1
+ {"version":3,"file":"missing-bluetooth-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-bluetooth-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAOvE,eAAO,MAAM,2BAA2B,EAAE,IAkFzC,CAAC"}
@@ -14,6 +14,10 @@ exports.MissingBluetoothPurposeRule = {
14
14
  confidence: index_js_1.Confidence.High,
15
15
  guidelineReference: '5.1.1',
16
16
  async evaluate(context) {
17
+ // Framework/library targets do not need app-level usage descriptions
18
+ if (context.isFrameworkTarget()) {
19
+ return [];
20
+ }
17
21
  const detectedFrameworks = BLUETOOTH_FRAMEWORKS.filter(f => context.hasFramework(f));
18
22
  if (detectedFrameworks.length === 0) {
19
23
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"missing-bluetooth-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-bluetooth-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,oBAAoB,GAAG,CAAC,eAAe,CAAC,CAAC;AAElC,QAAA,2BAA2B,GAAS;IAC/C,EAAE,EAAE,uCAAuC;IAC3C,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;QAEtF,6BAA6B;QAC7B,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,gDAAgD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC5F,0FAA0F;wBAC1F,gEAAgE;oBAClE,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;;;6EAKiE;wBACjE,yCAAyC;oBAC3C,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,mCAAmC;oBAC1C,WAAW,EAAE,uEAAuE;wBAClF,yFAAyF;oBAC3F,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;+CAGmC;oBACrC,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,oBAAoB,CAAC,EAAE,CAAC;YACxC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,yCAAyC;oBAChD,WAAW,EAAE,2EAA2E,oBAAoB,KAAK;wBAC/G,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,gGAAgG;wBAC3G;;kBAEM,oBAAoB;;qFAE+C;oBAC3E,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"missing-bluetooth-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-bluetooth-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,oBAAoB,GAAG,CAAC,eAAe,CAAC,CAAC;AAElC,QAAA,2BAA2B,GAAS;IAC/C,EAAE,EAAE,uCAAuC;IAC3C,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qEAAqE;QACrE,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;QAEtF,6BAA6B;QAC7B,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,gDAAgD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC5F,0FAA0F;wBAC1F,gEAAgE;oBAClE,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;;;6EAKiE;wBACjE,yCAAyC;oBAC3C,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,mCAAmC;oBAC1C,WAAW,EAAE,uEAAuE;wBAClF,yFAAyF;oBAC3F,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;+CAGmC;oBACrC,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,oBAAoB,CAAC,EAAE,CAAC;YACxC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,yCAAyC;oBAChD,WAAW,EAAE,2EAA2E,oBAAoB,KAAK;wBAC/G,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,gGAAgG;wBAC3G;;kBAEM,oBAAoB;;qFAE+C;oBAC3E,gBAAgB,EAAE,uHAAuH;iBAC1I,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-camera-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-camera-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAWvE,eAAO,MAAM,wBAAwB,EAAE,IAiFtC,CAAC"}
1
+ {"version":3,"file":"missing-camera-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-camera-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAWvE,eAAO,MAAM,wBAAwB,EAAE,IAqFtC,CAAC"}
@@ -18,6 +18,10 @@ exports.MissingCameraPurposeRule = {
18
18
  confidence: index_js_1.Confidence.High,
19
19
  guidelineReference: '5.1.1',
20
20
  async evaluate(context) {
21
+ // Framework/library targets do not need app-level usage descriptions
22
+ if (context.isFrameworkTarget()) {
23
+ return [];
24
+ }
21
25
  // Check if any camera-related framework is linked
22
26
  const detectedFrameworks = CAMERA_FRAMEWORKS.filter(f => context.hasFramework(f));
23
27
  if (detectedFrameworks.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"missing-camera-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-camera-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,iFAAiF;AACjF,2EAA2E;AAC3E,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAEvC,QAAA,wBAAwB,GAAS;IAC5C,EAAE,EAAE,oCAAoC;IACxC,IAAI,EAAE,kCAAkC;IACxC,WAAW,EAAE,oEAAoE;IACjF,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,mDAAmD;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAE1E,6BAA6B;QAC7B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,qDAAqD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACjG,uFAAuF;wBACvF,2DAA2D;oBAC7D,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,wFAAwF;wBACnG;;;;;8EAKkE;wBAClE,yCAAyC;oBAC3C,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,gCAAgC;oBACvC,WAAW,EAAE,8DAA8D;wBACzE,sFAAsF;oBACxF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;4CAGgC;oBAClC,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,sCAAsC;oBAC7C,WAAW,EAAE,kEAAkE,iBAAiB,KAAK;wBACnG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,6FAA6F;wBACxG;;kBAEM,iBAAiB;;sFAEmD;oBAC5E,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"missing-camera-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-camera-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,iFAAiF;AACjF,2EAA2E;AAC3E,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAEvC,QAAA,wBAAwB,GAAS;IAC5C,EAAE,EAAE,oCAAoC;IACxC,IAAI,EAAE,kCAAkC;IACxC,WAAW,EAAE,oEAAoE;IACjF,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qEAAqE;QACrE,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,mDAAmD;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAE1E,6BAA6B;QAC7B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,qDAAqD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACjG,uFAAuF;wBACvF,2DAA2D;oBAC7D,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,wFAAwF;wBACnG;;;;;8EAKkE;wBAClE,yCAAyC;oBAC3C,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,gCAAgC;oBACvC,WAAW,EAAE,8DAA8D;wBACzE,sFAAsF;oBACxF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,qFAAqF;wBAChG;;;4CAGgC;oBAClC,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,sCAAsC;oBAC7C,WAAW,EAAE,kEAAkE,iBAAiB,KAAK;wBACnG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,6FAA6F;wBACxG;;kBAEM,iBAAiB;;sFAEmD;oBAC5E,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-contacts-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-contacts-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAQvE,eAAO,MAAM,0BAA0B,EAAE,IAkFxC,CAAC"}
1
+ {"version":3,"file":"missing-contacts-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-contacts-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAQvE,eAAO,MAAM,0BAA0B,EAAE,IAsFxC,CAAC"}
@@ -15,6 +15,10 @@ exports.MissingContactsPurposeRule = {
15
15
  confidence: index_js_1.Confidence.High,
16
16
  guidelineReference: '5.1.1',
17
17
  async evaluate(context) {
18
+ // Framework/library targets do not need app-level usage descriptions
19
+ if (context.isFrameworkTarget()) {
20
+ return [];
21
+ }
18
22
  // Check if any Contacts-related framework is linked
19
23
  const detectedFrameworks = CONTACTS_FRAMEWORKS.filter(f => context.hasFramework(f));
20
24
  if (detectedFrameworks.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"missing-contacts-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-contacts-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAErC,QAAA,0BAA0B,GAAS;IAC9C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EAAE,wEAAwE;IACrF,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE9D,6BAA6B;QAC7B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,+CAA+C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC3F,6FAA6F;wBAC7F,gEAAgE;oBAClE,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,0FAA0F;wBACrG;;;;;;uFAM2E;oBAC7E,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,kCAAkC;oBACzC,WAAW,EAAE,gEAAgE;wBAC3E,wFAAwF;oBAC1F,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,uFAAuF;wBAClG;;;;;6FAKiF;oBACnF,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,wCAAwC;oBAC/C,WAAW,EAAE,oEAAoE,mBAAmB,KAAK;wBACvG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,+FAA+F;wBAC1G;;kBAEM,mBAAmB;;oFAE+C;oBAC1E,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"missing-contacts-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-contacts-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAErC,QAAA,0BAA0B,GAAS;IAC9C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EAAE,wEAAwE;IACrF,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qEAAqE;QACrE,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE9D,6BAA6B;QAC7B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,+CAA+C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC3F,6FAA6F;wBAC7F,gEAAgE;oBAClE,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,0FAA0F;wBACrG;;;;;;uFAM2E;oBAC7E,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,kCAAkC;oBACzC,WAAW,EAAE,gEAAgE;wBAC3E,wFAAwF;oBAC1F,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,uFAAuF;wBAClG;;;;;6FAKiF;oBACnF,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,wCAAwC;oBAC/C,WAAW,EAAE,oEAAoE,mBAAmB,KAAK;wBACvG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,+FAA+F;wBAC1G;;kBAEM,mBAAmB;;oFAE+C;oBAC1E,gBAAgB,EAAE,gHAAgH;iBACnI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-face-id-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-face-id-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAOvE,eAAO,MAAM,wBAAwB,EAAE,IA8EtC,CAAC"}
1
+ {"version":3,"file":"missing-face-id-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-face-id-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAOvE,eAAO,MAAM,wBAAwB,EAAE,IAkFtC,CAAC"}
@@ -14,6 +14,10 @@ exports.MissingFaceIdPurposeRule = {
14
14
  confidence: index_js_1.Confidence.High,
15
15
  guidelineReference: '5.1.1',
16
16
  async evaluate(context) {
17
+ // Framework/library targets do not need app-level usage descriptions
18
+ if (context.isFrameworkTarget()) {
19
+ return [];
20
+ }
17
21
  const detectedFrameworks = FACE_ID_FRAMEWORKS.filter(f => context.hasFramework(f));
18
22
  if (detectedFrameworks.length === 0) {
19
23
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"missing-face-id-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-face-id-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEtC,QAAA,wBAAwB,GAAS;IAC5C,EAAE,EAAE,qCAAqC;IACzC,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,iFAAiF;IAC9F,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAE1E,6BAA6B;QAC7B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,+DAA+D,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC3G,4EAA4E;wBAC5E,kFAAkF;oBACpF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,4EAA4E;wBACvF;;;;;8DAKkD;wBAClD,yCAAyC;oBAC3C,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,iCAAiC;oBACxC,WAAW,EAAE,8DAA8D;wBACzE,uFAAuF;oBACzF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,4EAA4E;wBACvF;;;6CAGiC;oBACnC,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,uCAAuC;oBAC9C,WAAW,EAAE,kEAAkE,iBAAiB,KAAK;wBACnG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,8FAA8F;wBACzG;;kBAEM,iBAAiB;;mFAEgD;oBACzE,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"missing-face-id-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-face-id-purpose.ts"],"names":[],"mappings":";;;AASA,mDAA0E;AAC1E,mEAA8D;AAC9D,wCAAyC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEtC,QAAA,wBAAwB,GAAS;IAC5C,EAAE,EAAE,qCAAqC;IACzC,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,iFAAiF;IAC9F,QAAQ,EAAE,uBAAY,CAAC,OAAO;IAC9B,QAAQ,EAAE,mBAAQ,CAAC,QAAQ;IAC3B,UAAU,EAAE,qBAAU,CAAC,IAAI;IAC3B,kBAAkB,EAAE,OAAO;IAE3B,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,qEAAqE;QACrE,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAE1E,6BAA6B;QAC7B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,WAAW,EAAE,+DAA+D,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC3G,4EAA4E;wBAC5E,kFAAkF;oBACpF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,4EAA4E;wBACvF;;;;;8DAKkD;wBAClD,yCAAyC;oBAC3C,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,iCAAiC;oBACxC,WAAW,EAAE,8DAA8D;wBACzE,uFAAuF;oBACzF,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,4EAA4E;wBACvF;;;6CAGiC;oBACnC,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAA,+BAAa,EAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAA,qBAAW,EAAC,IAAI,EAAE;oBAChB,KAAK,EAAE,uCAAuC;oBAC9C,WAAW,EAAE,kEAAkE,iBAAiB,KAAK;wBACnG,sDAAsD;oBACxD,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,YAAY;oBAC/C,WAAW,EAAE,8FAA8F;wBACzG;;kBAEM,iBAAiB;;mFAEgD;oBACzE,gBAAgB,EAAE,8GAA8G;iBACjI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-location-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-location-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAUvE,eAAO,MAAM,0BAA0B,EAAE,IAqIxC,CAAC"}
1
+ {"version":3,"file":"missing-location-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-location-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAUvE,eAAO,MAAM,0BAA0B,EAAE,IAyIxC,CAAC"}
@@ -17,6 +17,10 @@ exports.MissingLocationPurposeRule = {
17
17
  confidence: index_js_1.Confidence.High,
18
18
  guidelineReference: '5.1.1',
19
19
  async evaluate(context) {
20
+ // Framework/library targets do not need app-level usage descriptions
21
+ if (context.isFrameworkTarget()) {
22
+ return [];
23
+ }
20
24
  // Check if any location-related framework is linked
21
25
  const detectedFrameworks = LOCATION_FRAMEWORKS.filter(f => context.hasFramework(f));
22
26
  if (detectedFrameworks.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"missing-location-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-location-purpose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"missing-location-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-location-purpose.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-microphone-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-microphone-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAUvE,eAAO,MAAM,4BAA4B,EAAE,IA+H1C,CAAC"}
1
+ {"version":3,"file":"missing-microphone-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-microphone-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AAUvE,eAAO,MAAM,4BAA4B,EAAE,IAmI1C,CAAC"}
@@ -17,6 +17,10 @@ exports.MissingMicrophonePurposeRule = {
17
17
  confidence: index_js_1.Confidence.High,
18
18
  guidelineReference: '5.1.1',
19
19
  async evaluate(context) {
20
+ // Framework/library targets do not need app-level usage descriptions
21
+ if (context.isFrameworkTarget()) {
22
+ return [];
23
+ }
20
24
  // Check if any audio recording framework is linked
21
25
  const detectedFrameworks = MICROPHONE_FRAMEWORKS.filter(f => context.hasFramework(f));
22
26
  // AVFoundation CAN record audio but is also used by virtually every app that plays video/audio.
@@ -1 +1 @@
1
- {"version":3,"file":"missing-microphone-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-microphone-purpose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"missing-microphone-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-microphone-purpose.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"missing-photo-library-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-photo-library-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AASvE,eAAO,MAAM,8BAA8B,EAAE,IAgG5C,CAAC"}
1
+ {"version":3,"file":"missing-photo-library-purpose.d.ts","sourceRoot":"","sources":["../../../src/rules/privacy/missing-photo-library-purpose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,sBAAsB,CAAC;AASvE,eAAO,MAAM,8BAA8B,EAAE,IAsG5C,CAAC"}
@@ -16,6 +16,10 @@ exports.MissingPhotoLibraryPurposeRule = {
16
16
  confidence: index_js_1.Confidence.High,
17
17
  guidelineReference: '5.1.1',
18
18
  async evaluate(context) {
19
+ // Framework/library targets do not need app-level usage descriptions
20
+ if (context.isFrameworkTarget()) {
21
+ return [];
22
+ }
19
23
  // Check if any Photos-related framework is linked
20
24
  const detectedFrameworks = PHOTO_LIBRARY_FRAMEWORKS.filter(f => context.hasFramework(f));
21
25
  if (detectedFrameworks.length === 0) {
@@ -25,7 +29,9 @@ exports.MissingPhotoLibraryPurposeRule = {
25
29
  const photoLibraryDescription = context.plistString(PHOTO_LIBRARY_KEY);
26
30
  const photoLibraryAddDescription = context.plistString(PHOTO_LIBRARY_ADD_KEY);
27
31
  // Case 1: Completely missing read access description
28
- if (photoLibraryDescription === undefined) {
32
+ // If NSPhotoLibraryAddUsageDescription IS present, the app may only save photos (not read),
33
+ // which is a valid pattern that doesn't require NSPhotoLibraryUsageDescription
34
+ if (photoLibraryDescription === undefined && photoLibraryAddDescription === undefined) {
29
35
  findings.push((0, base_js_1.makeFinding)(this, {
30
36
  description: `Your app links against photo library frameworks (${detectedFrameworks.join(', ')}) ` +
31
37
  `but Info.plist is missing NSPhotoLibraryUsageDescription. Apps that access the photo library ` +
@@ -42,7 +48,7 @@ If your app only needs to save photos (not read), you can use NSPhotoLibraryAddU
42
48
  }));
43
49
  }
44
50
  // Case 2: Empty description
45
- else if (photoLibraryDescription.trim() === '') {
51
+ else if (photoLibraryDescription !== undefined && photoLibraryDescription.trim() === '') {
46
52
  findings.push((0, base_js_1.makeFinding)(this, {
47
53
  title: 'Empty Photo Library Usage Description',
48
54
  description: `NSPhotoLibraryUsageDescription exists in Info.plist but is empty. ` +
@@ -57,7 +63,7 @@ Bad example: "Photo access required" or ""`,
57
63
  }));
58
64
  }
59
65
  // Case 3: Placeholder text detected
60
- else if ((0, plist_parser_js_1.isPlaceholder)(photoLibraryDescription)) {
66
+ else if (photoLibraryDescription !== undefined && (0, plist_parser_js_1.isPlaceholder)(photoLibraryDescription)) {
61
67
  findings.push((0, base_js_1.makeFinding)(this, {
62
68
  title: 'Placeholder Photo Library Usage Description',
63
69
  description: `NSPhotoLibraryUsageDescription appears to contain placeholder text: "${photoLibraryDescription}". ` +
@@ -1 +1 @@
1
- {"version":3,"file":"missing-photo-library-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-photo-library-purpose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"missing-photo-library-purpose.js","sourceRoot":"","sources":["../../../src/rules/privacy/missing-photo-library-purpose.ts"],"names":[],"mappings":"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"}
@@ -58,9 +58,15 @@ export interface Finding {
58
58
  title: string;
59
59
  description: string;
60
60
  location?: string;
61
+ /** Line number in the source file (1-indexed) */
62
+ line?: number;
61
63
  guideline: string;
62
64
  fixGuidance: string;
63
65
  documentationURL?: string;
66
+ /** Whether this finding was suppressed */
67
+ suppressed?: boolean;
68
+ /** Reason for suppression */
69
+ suppressionReason?: string;
64
70
  }
65
71
  /**
66
72
  * Result of a scan
@@ -69,6 +75,7 @@ export interface ScanResult {
69
75
  projectPath: string;
70
76
  timestamp: Date;
71
77
  findings: Finding[];
78
+ suppressedFindings: Finding[];
72
79
  rulesRun: string[];
73
80
  duration: number;
74
81
  /** Project type detected: xcodeproj, swiftpm, both, or unknown */
@@ -121,6 +128,10 @@ export interface ScanContext {
121
128
  generatesInfoPlist(): boolean;
122
129
  /** Whether this target is an app extension (not a full app) */
123
130
  isExtension(): boolean;
131
+ /** Whether this is a macOS-only target (no iOS support) */
132
+ isMacOSOnly(): boolean;
133
+ /** Whether this is a framework/library target (not an app) */
134
+ isFrameworkTarget(): boolean;
124
135
  }
125
136
  /**
126
137
  * Rule interface - each rule must implement this
@@ -155,5 +166,6 @@ export interface ScanOptions {
155
166
  verbose?: boolean;
156
167
  rules?: string[];
157
168
  exclude?: string[];
169
+ showSuppressed?: boolean;
158
170
  }
159
171
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,SAAS,cAAc;IACvB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,mCAAmC;IACnC,wBAAwB,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7D,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGtC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC5C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;IACrD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,6DAA6D;IAC7D,kBAAkB,IAAI,OAAO,CAAC;IAC9B,+DAA+D;IAC/D,WAAW,IAAI,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,yBAAW,CAAA;AACb,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED;;GAEG;AACH,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,6BAAa,CAAA;IACb,6CAA6B,CAAA;IAC7B,2CAA2B,CAAA;IAC3B,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;AACnB,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB;AAED;;GAEG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2CAAuB,CAAA;IACvB,+BAAW,CAAA;IACX,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;AACnB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AA6GD;;GAEG;AACH,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,+BAAe,CAAA;AACjB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACf,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,yBAAW,CAAA;AACb,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED;;GAEG;AACH,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,6BAAa,CAAA;IACb,6CAA6B,CAAA;IAC7B,2CAA2B,CAAA;IAC3B,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;AACnB,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB;AAED;;GAEG;AACH,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2CAAuB,CAAA;IACvB,+BAAW,CAAA;IACX,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;AACnB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAwHD;;GAEG;AACH,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,+BAAe,CAAA;AACjB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shiplint",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Catch App Store rejections before they happen. Pre-submission linter for iOS apps.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {