shiplint 0.1.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 (130) hide show
  1. package/README.md +107 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +101 -0
  5. package/dist/cli/index.js.map +1 -0
  6. package/dist/core/index.d.ts +5 -0
  7. package/dist/core/index.d.ts.map +1 -0
  8. package/dist/core/index.js +21 -0
  9. package/dist/core/index.js.map +1 -0
  10. package/dist/core/scanner.d.ts +27 -0
  11. package/dist/core/scanner.d.ts.map +1 -0
  12. package/dist/core/scanner.js +104 -0
  13. package/dist/core/scanner.js.map +1 -0
  14. package/dist/formatters/index.d.ts +13 -0
  15. package/dist/formatters/index.d.ts.map +1 -0
  16. package/dist/formatters/index.js +29 -0
  17. package/dist/formatters/index.js.map +1 -0
  18. package/dist/formatters/json.d.ts +13 -0
  19. package/dist/formatters/json.d.ts.map +1 -0
  20. package/dist/formatters/json.js +17 -0
  21. package/dist/formatters/json.js.map +1 -0
  22. package/dist/formatters/sarif.d.ts +14 -0
  23. package/dist/formatters/sarif.d.ts.map +1 -0
  24. package/dist/formatters/sarif.js +108 -0
  25. package/dist/formatters/sarif.js.map +1 -0
  26. package/dist/formatters/text.d.ts +9 -0
  27. package/dist/formatters/text.d.ts.map +1 -0
  28. package/dist/formatters/text.js +128 -0
  29. package/dist/formatters/text.js.map +1 -0
  30. package/dist/index.d.ts +11 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +49 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/parsers/entitlements-parser.d.ts +26 -0
  35. package/dist/parsers/entitlements-parser.d.ts.map +1 -0
  36. package/dist/parsers/entitlements-parser.js +105 -0
  37. package/dist/parsers/entitlements-parser.js.map +1 -0
  38. package/dist/parsers/framework-detector.d.ts +76 -0
  39. package/dist/parsers/framework-detector.d.ts.map +1 -0
  40. package/dist/parsers/framework-detector.js +501 -0
  41. package/dist/parsers/framework-detector.js.map +1 -0
  42. package/dist/parsers/index.d.ts +10 -0
  43. package/dist/parsers/index.d.ts.map +1 -0
  44. package/dist/parsers/index.js +26 -0
  45. package/dist/parsers/index.js.map +1 -0
  46. package/dist/parsers/pbxproj-parser.d.ts +166 -0
  47. package/dist/parsers/pbxproj-parser.d.ts.map +1 -0
  48. package/dist/parsers/pbxproj-parser.js +423 -0
  49. package/dist/parsers/pbxproj-parser.js.map +1 -0
  50. package/dist/parsers/plist-parser.d.ts +26 -0
  51. package/dist/parsers/plist-parser.d.ts.map +1 -0
  52. package/dist/parsers/plist-parser.js +166 -0
  53. package/dist/parsers/plist-parser.js.map +1 -0
  54. package/dist/parsers/project-parser.d.ts +57 -0
  55. package/dist/parsers/project-parser.d.ts.map +1 -0
  56. package/dist/parsers/project-parser.js +618 -0
  57. package/dist/parsers/project-parser.js.map +1 -0
  58. package/dist/parsers/workspace-parser.d.ts +82 -0
  59. package/dist/parsers/workspace-parser.d.ts.map +1 -0
  60. package/dist/parsers/workspace-parser.js +287 -0
  61. package/dist/parsers/workspace-parser.js.map +1 -0
  62. package/dist/rules/auth/index.d.ts +5 -0
  63. package/dist/rules/auth/index.d.ts.map +1 -0
  64. package/dist/rules/auth/index.js +9 -0
  65. package/dist/rules/auth/index.js.map +1 -0
  66. package/dist/rules/auth/third-party-login-no-siwa.d.ts +11 -0
  67. package/dist/rules/auth/third-party-login-no-siwa.d.ts.map +1 -0
  68. package/dist/rules/auth/third-party-login-no-siwa.js +119 -0
  69. package/dist/rules/auth/third-party-login-no-siwa.js.map +1 -0
  70. package/dist/rules/base.d.ts +25 -0
  71. package/dist/rules/base.d.ts.map +1 -0
  72. package/dist/rules/base.js +37 -0
  73. package/dist/rules/base.js.map +1 -0
  74. package/dist/rules/config/ats-exception-without-justification.d.ts +12 -0
  75. package/dist/rules/config/ats-exception-without-justification.d.ts.map +1 -0
  76. package/dist/rules/config/ats-exception-without-justification.js +152 -0
  77. package/dist/rules/config/ats-exception-without-justification.js.map +1 -0
  78. package/dist/rules/config/index.d.ts +5 -0
  79. package/dist/rules/config/index.d.ts.map +1 -0
  80. package/dist/rules/config/index.js +9 -0
  81. package/dist/rules/config/index.js.map +1 -0
  82. package/dist/rules/index.d.ts +43 -0
  83. package/dist/rules/index.d.ts.map +1 -0
  84. package/dist/rules/index.js +103 -0
  85. package/dist/rules/index.js.map +1 -0
  86. package/dist/rules/metadata/index.d.ts +5 -0
  87. package/dist/rules/metadata/index.d.ts.map +1 -0
  88. package/dist/rules/metadata/index.js +9 -0
  89. package/dist/rules/metadata/index.js.map +1 -0
  90. package/dist/rules/metadata/missing-privacy-manifest.d.ts +12 -0
  91. package/dist/rules/metadata/missing-privacy-manifest.d.ts.map +1 -0
  92. package/dist/rules/metadata/missing-privacy-manifest.js +186 -0
  93. package/dist/rules/metadata/missing-privacy-manifest.js.map +1 -0
  94. package/dist/rules/privacy/att-tracking-mismatch.d.ts +12 -0
  95. package/dist/rules/privacy/att-tracking-mismatch.d.ts.map +1 -0
  96. package/dist/rules/privacy/att-tracking-mismatch.js +113 -0
  97. package/dist/rules/privacy/att-tracking-mismatch.js.map +1 -0
  98. package/dist/rules/privacy/index.d.ts +11 -0
  99. package/dist/rules/privacy/index.d.ts.map +1 -0
  100. package/dist/rules/privacy/index.js +21 -0
  101. package/dist/rules/privacy/index.js.map +1 -0
  102. package/dist/rules/privacy/location-always-unjustified.d.ts +11 -0
  103. package/dist/rules/privacy/location-always-unjustified.d.ts.map +1 -0
  104. package/dist/rules/privacy/location-always-unjustified.js +102 -0
  105. package/dist/rules/privacy/location-always-unjustified.js.map +1 -0
  106. package/dist/rules/privacy/missing-camera-purpose.d.ts +11 -0
  107. package/dist/rules/privacy/missing-camera-purpose.d.ts.map +1 -0
  108. package/dist/rules/privacy/missing-camera-purpose.js +83 -0
  109. package/dist/rules/privacy/missing-camera-purpose.js.map +1 -0
  110. package/dist/rules/privacy/missing-contacts-purpose.d.ts +11 -0
  111. package/dist/rules/privacy/missing-contacts-purpose.d.ts.map +1 -0
  112. package/dist/rules/privacy/missing-contacts-purpose.js +85 -0
  113. package/dist/rules/privacy/missing-contacts-purpose.js.map +1 -0
  114. package/dist/rules/privacy/missing-location-purpose.d.ts +12 -0
  115. package/dist/rules/privacy/missing-location-purpose.d.ts.map +1 -0
  116. package/dist/rules/privacy/missing-location-purpose.js +137 -0
  117. package/dist/rules/privacy/missing-location-purpose.js.map +1 -0
  118. package/dist/rules/privacy/missing-microphone-purpose.d.ts +11 -0
  119. package/dist/rules/privacy/missing-microphone-purpose.d.ts.map +1 -0
  120. package/dist/rules/privacy/missing-microphone-purpose.js +132 -0
  121. package/dist/rules/privacy/missing-microphone-purpose.js.map +1 -0
  122. package/dist/rules/privacy/missing-photo-library-purpose.d.ts +11 -0
  123. package/dist/rules/privacy/missing-photo-library-purpose.d.ts.map +1 -0
  124. package/dist/rules/privacy/missing-photo-library-purpose.js +102 -0
  125. package/dist/rules/privacy/missing-photo-library-purpose.js.map +1 -0
  126. package/dist/types/index.d.ts +140 -0
  127. package/dist/types/index.d.ts.map +1 -0
  128. package/dist/types/index.js +59 -0
  129. package/dist/types/index.js.map +1 -0
  130. package/package.json +68 -0
@@ -0,0 +1,501 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.cameraFrameworks = exports.locationFrameworks = exports.socialLoginSDKPatterns = exports.trackingSDKPatterns = void 0;
37
+ exports.parsePodfileLock = parsePodfileLock;
38
+ exports.parsePodfileLockContent = parsePodfileLockContent;
39
+ exports.parsePackageResolved = parsePackageResolved;
40
+ exports.parsePackageResolvedData = parsePackageResolvedData;
41
+ exports.parseProjectFrameworks = parseProjectFrameworks;
42
+ exports.parseProjectFrameworksContent = parseProjectFrameworksContent;
43
+ exports.detectTrackingSDKs = detectTrackingSDKs;
44
+ exports.detectSocialLoginSDKs = detectSocialLoginSDKs;
45
+ exports.loadDependenciesForProject = loadDependenciesForProject;
46
+ exports.loadAllDependencies = loadAllDependencies;
47
+ /**
48
+ * Utility to detect linked frameworks and dependencies in iOS projects
49
+ */
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const index_js_1 = require("../types/index.js");
53
+ /**
54
+ * Known tracking SDK patterns for ATT detection
55
+ */
56
+ exports.trackingSDKPatterns = [
57
+ // Facebook/Meta
58
+ { pattern: 'FBSDKCoreKit', name: 'Facebook SDK' },
59
+ { pattern: 'FacebookCore', name: 'Facebook SDK' },
60
+ { pattern: 'FBAudienceNetwork', name: 'Facebook Audience Network' },
61
+ // Google
62
+ { pattern: 'GoogleAnalytics', name: 'Google Analytics' },
63
+ { pattern: 'FirebaseAnalytics', name: 'Firebase Analytics' },
64
+ { pattern: 'Firebase/Analytics', name: 'Firebase Analytics' },
65
+ { pattern: 'Google-Mobile-Ads-SDK', name: 'Google Mobile Ads' },
66
+ { pattern: 'GoogleMobileAds', name: 'Google Mobile Ads' },
67
+ // Attribution/Analytics
68
+ { pattern: 'Adjust', name: 'Adjust' },
69
+ { pattern: 'AppsFlyer', name: 'AppsFlyer' },
70
+ { pattern: 'AppsFlyerFramework', name: 'AppsFlyer' },
71
+ { pattern: 'Branch', name: 'Branch.io' },
72
+ { pattern: 'Amplitude', name: 'Amplitude' },
73
+ { pattern: 'amplitude-ios', name: 'Amplitude' },
74
+ { pattern: 'Mixpanel', name: 'Mixpanel' },
75
+ { pattern: 'Segment', name: 'Segment' },
76
+ { pattern: 'Singular', name: 'Singular' },
77
+ { pattern: 'Kochava', name: 'Kochava' },
78
+ { pattern: 'Tenjin', name: 'Tenjin' },
79
+ ];
80
+ /**
81
+ * Known social login SDK patterns for SIWA detection
82
+ */
83
+ exports.socialLoginSDKPatterns = [
84
+ // Google Sign-In
85
+ { pattern: 'GoogleSignIn', name: 'Google Sign-In' },
86
+ { pattern: 'GIDSignIn', name: 'Google Sign-In' },
87
+ // Facebook Login
88
+ { pattern: 'FBSDKLoginKit', name: 'Facebook Login' },
89
+ { pattern: 'FacebookLogin', name: 'Facebook Login' },
90
+ // Twitter/X
91
+ { pattern: 'TwitterKit', name: 'Twitter Login' },
92
+ // Firebase Auth (may include social)
93
+ { pattern: 'FirebaseAuth', name: 'Firebase Auth' },
94
+ { pattern: 'Firebase/Auth', name: 'Firebase Auth' },
95
+ // Auth0
96
+ { pattern: 'Auth0', name: 'Auth0' },
97
+ // Amazon
98
+ { pattern: 'LoginWithAmazon', name: 'Login with Amazon' },
99
+ // LinkedIn
100
+ { pattern: 'linkedin-sdk', name: 'LinkedIn Login' },
101
+ ];
102
+ /**
103
+ * Location-related frameworks
104
+ */
105
+ exports.locationFrameworks = new Set([
106
+ 'CoreLocation',
107
+ 'MapKit',
108
+ ]);
109
+ /**
110
+ * Camera-related frameworks
111
+ */
112
+ exports.cameraFrameworks = new Set([
113
+ 'AVFoundation',
114
+ 'AVKit',
115
+ 'VisionKit',
116
+ ]);
117
+ /**
118
+ * Parses Podfile.lock to extract CocoaPods dependencies
119
+ */
120
+ function parsePodfileLock(filePath) {
121
+ if (!fs.existsSync(filePath)) {
122
+ return [];
123
+ }
124
+ const content = fs.readFileSync(filePath, 'utf-8');
125
+ return parsePodfileLockContent(content);
126
+ }
127
+ /**
128
+ * Parses Podfile.lock content string
129
+ */
130
+ function parsePodfileLockContent(content) {
131
+ const dependencies = [];
132
+ const lines = content.split('\n');
133
+ const seenNames = new Set();
134
+ let inPodsSection = false;
135
+ for (const line of lines) {
136
+ const trimmed = line.trim();
137
+ // Start of PODS section
138
+ if (trimmed === 'PODS:') {
139
+ inPodsSection = true;
140
+ continue;
141
+ }
142
+ // End of PODS section (next top-level key)
143
+ if (inPodsSection && !line.startsWith(' ') && !line.startsWith('\t') && trimmed.endsWith(':')) {
144
+ break;
145
+ }
146
+ // Parse pod entry
147
+ if (inPodsSection && line.startsWith(' - ')) {
148
+ const entry = line.slice(4); // Remove " - "
149
+ // Match: "PodName (version)" or "PodName/Subspec (version)"
150
+ const match = entry.match(/^([^\s(]+)\s*\(([^)]+)\)/);
151
+ if (match) {
152
+ const fullName = match[1];
153
+ const version = match[2];
154
+ // Get base name (without subspec)
155
+ const baseName = fullName.split('/')[0];
156
+ // Add base name if not seen
157
+ if (!seenNames.has(baseName)) {
158
+ seenNames.add(baseName);
159
+ dependencies.push({
160
+ name: baseName,
161
+ version,
162
+ source: index_js_1.DependencySource.CocoaPods,
163
+ });
164
+ }
165
+ // Also track the full name for subspec matching
166
+ if (fullName.includes('/') && !seenNames.has(fullName)) {
167
+ seenNames.add(fullName);
168
+ dependencies.push({
169
+ name: fullName,
170
+ version,
171
+ source: index_js_1.DependencySource.CocoaPods,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ }
177
+ return dependencies;
178
+ }
179
+ /**
180
+ * Parses Package.resolved to extract SPM dependencies
181
+ */
182
+ function parsePackageResolved(filePath) {
183
+ if (!fs.existsSync(filePath)) {
184
+ return [];
185
+ }
186
+ const content = fs.readFileSync(filePath, 'utf-8');
187
+ try {
188
+ const json = JSON.parse(content);
189
+ return parsePackageResolvedData(json);
190
+ }
191
+ catch {
192
+ return [];
193
+ }
194
+ }
195
+ /**
196
+ * Parses Package.resolved JSON data
197
+ */
198
+ function parsePackageResolvedData(json) {
199
+ const dependencies = [];
200
+ // Try version 2 format first (newer)
201
+ const pins = json['pins'];
202
+ if (Array.isArray(pins)) {
203
+ for (const pin of pins) {
204
+ const identity = pin['identity'];
205
+ const state = pin['state'];
206
+ if (identity) {
207
+ dependencies.push({
208
+ name: identity,
209
+ version: state?.['version'],
210
+ source: index_js_1.DependencySource.SPM,
211
+ });
212
+ }
213
+ }
214
+ return dependencies;
215
+ }
216
+ // Try version 1 format (older)
217
+ const object = json['object'];
218
+ const v1Pins = object?.['pins'];
219
+ if (Array.isArray(v1Pins)) {
220
+ for (const pin of v1Pins) {
221
+ const pkg = pin['package'];
222
+ const state = pin['state'];
223
+ if (pkg) {
224
+ dependencies.push({
225
+ name: pkg,
226
+ version: state?.['version'],
227
+ source: index_js_1.DependencySource.SPM,
228
+ });
229
+ }
230
+ }
231
+ }
232
+ return dependencies;
233
+ }
234
+ /**
235
+ * Parses project.pbxproj to extract linked frameworks
236
+ */
237
+ function parseProjectFrameworks(filePath) {
238
+ if (!fs.existsSync(filePath)) {
239
+ return new Set();
240
+ }
241
+ const content = fs.readFileSync(filePath, 'utf-8');
242
+ return parseProjectFrameworksContent(content);
243
+ }
244
+ /**
245
+ * Parses project.pbxproj content to extract linked frameworks
246
+ */
247
+ function parseProjectFrameworksContent(content) {
248
+ const frameworks = new Set();
249
+ // Pattern: Framework file references like "AVFoundation.framework"
250
+ const frameworkPattern = /(\w+)\.framework/g;
251
+ let match;
252
+ while ((match = frameworkPattern.exec(content)) !== null) {
253
+ frameworks.add(match[1]);
254
+ }
255
+ return frameworks;
256
+ }
257
+ /**
258
+ * Detects tracking SDKs from a list of dependencies
259
+ */
260
+ function detectTrackingSDKs(dependencies) {
261
+ const detected = [];
262
+ for (const { pattern, name } of exports.trackingSDKPatterns) {
263
+ const found = dependencies.some(dep => dep.name.toLowerCase().includes(pattern.toLowerCase()));
264
+ if (found && !detected.includes(name)) {
265
+ detected.push(name);
266
+ }
267
+ }
268
+ return detected;
269
+ }
270
+ /**
271
+ * Detects social login SDKs from a list of dependencies
272
+ */
273
+ function detectSocialLoginSDKs(dependencies) {
274
+ const detected = [];
275
+ for (const { pattern, name } of exports.socialLoginSDKPatterns) {
276
+ const found = dependencies.some(dep => dep.name.toLowerCase().includes(pattern.toLowerCase()));
277
+ if (found && !detected.includes(name)) {
278
+ detected.push(name);
279
+ }
280
+ }
281
+ return detected;
282
+ }
283
+ /**
284
+ * Maximum depth for recursive directory searches
285
+ */
286
+ const MAX_SEARCH_DEPTH = 5;
287
+ /**
288
+ * Check if directory contains a .xcodeproj different from the specified one
289
+ */
290
+ function containsSiblingXcodeproj(dir, currentXcodeprojPath) {
291
+ if (!currentXcodeprojPath)
292
+ return false;
293
+ try {
294
+ const entries = fs.readdirSync(dir);
295
+ for (const entry of entries) {
296
+ if (entry.endsWith('.xcodeproj')) {
297
+ const xcprojPath = path.join(dir, entry);
298
+ if (path.resolve(xcprojPath) !== path.resolve(currentXcodeprojPath)) {
299
+ return true;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ catch {
305
+ // Ignore errors
306
+ }
307
+ return false;
308
+ }
309
+ /**
310
+ * Recursively find files matching a predicate
311
+ * P2-C FIX: Can exclude directories containing sibling .xcodeproj files
312
+ */
313
+ function findFilesRecursive(dir, predicate, options = {}, currentDepth = 0) {
314
+ const maxDepth = options.maxDepth ?? MAX_SEARCH_DEPTH;
315
+ if (currentDepth >= maxDepth)
316
+ return [];
317
+ const results = [];
318
+ try {
319
+ const entries = fs.readdirSync(dir);
320
+ for (const entry of entries) {
321
+ const fullPath = path.join(dir, entry);
322
+ // Skip common non-project directories for performance
323
+ if (entry === 'node_modules' || entry === '.git' ||
324
+ entry === 'build' || entry === 'DerivedData' || entry === '.build') {
325
+ continue;
326
+ }
327
+ if (predicate(entry)) {
328
+ results.push(fullPath);
329
+ }
330
+ // Recurse into directories
331
+ try {
332
+ const stat = fs.statSync(fullPath);
333
+ if (stat.isDirectory() &&
334
+ !entry.endsWith('.xcodeproj') &&
335
+ !entry.endsWith('.xcworkspace') &&
336
+ !entry.endsWith('.app') &&
337
+ !entry.endsWith('.framework')) {
338
+ // P2-C FIX: Skip directories containing sibling projects
339
+ if (options.currentXcodeprojPath && containsSiblingXcodeproj(fullPath, options.currentXcodeprojPath)) {
340
+ continue;
341
+ }
342
+ results.push(...findFilesRecursive(fullPath, predicate, options, currentDepth + 1));
343
+ }
344
+ }
345
+ catch {
346
+ // Ignore stat errors
347
+ }
348
+ }
349
+ }
350
+ catch {
351
+ // Ignore readdir errors
352
+ }
353
+ return results;
354
+ }
355
+ /**
356
+ * P2-C FIX: Loads dependencies for a specific .xcodeproj, avoiding recursive scan of whole parent
357
+ *
358
+ * Searches lockfiles only in:
359
+ * 1. The .xcodeproj directory itself (project.xcworkspace/xcshareddata/swiftpm/Package.resolved)
360
+ * 2. The parent directory of the .xcodeproj
361
+ * 3. The parent's .swiftpm directory
362
+ *
363
+ * This prevents picking up lockfiles from sibling projects in monorepos.
364
+ *
365
+ * @param xcodeprojPath Path to the .xcodeproj directory
366
+ * @returns Array of dependencies found
367
+ */
368
+ function loadDependenciesForProject(xcodeprojPath) {
369
+ const all = [];
370
+ const seenPodfiles = new Set();
371
+ const seenPackageResolved = new Set();
372
+ // Ensure we have the .xcodeproj path
373
+ const xcprojDir = xcodeprojPath.endsWith('.xcodeproj')
374
+ ? xcodeprojPath
375
+ : xcodeprojPath.includes('project.pbxproj')
376
+ ? path.dirname(xcodeprojPath)
377
+ : xcodeprojPath;
378
+ const projectDir = path.dirname(xcprojDir);
379
+ // Specific locations to check for Podfile.lock (no recursive scan)
380
+ const podfileLockLocations = [
381
+ path.join(projectDir, 'Podfile.lock'),
382
+ path.join(path.dirname(projectDir), 'Podfile.lock'), // parent dir (workspace root)
383
+ ];
384
+ for (const loc of podfileLockLocations) {
385
+ if (fs.existsSync(loc)) {
386
+ const deps = parsePodfileLock(loc);
387
+ for (const dep of deps) {
388
+ const key = `${dep.name}@${dep.version}`;
389
+ if (!seenPodfiles.has(key)) {
390
+ seenPodfiles.add(key);
391
+ all.push(dep);
392
+ }
393
+ }
394
+ }
395
+ }
396
+ // Specific locations for Package.resolved (no recursive scan)
397
+ const packageResolvedLocations = [
398
+ // Inside the .xcodeproj bundle
399
+ path.join(xcprojDir, 'project.xcworkspace', 'xcshareddata', 'swiftpm', 'Package.resolved'),
400
+ // Project directory
401
+ path.join(projectDir, 'Package.resolved'),
402
+ path.join(projectDir, '.swiftpm', 'Package.resolved'),
403
+ // Parent directory (workspace root)
404
+ path.join(path.dirname(projectDir), 'Package.resolved'),
405
+ path.join(path.dirname(projectDir), '.swiftpm', 'Package.resolved'),
406
+ ];
407
+ // Also check for workspace-level SPM
408
+ const workspacePath = path.join(projectDir, path.basename(xcprojDir).replace('.xcodeproj', '.xcworkspace'));
409
+ if (fs.existsSync(workspacePath)) {
410
+ packageResolvedLocations.push(path.join(workspacePath, 'xcshareddata', 'swiftpm', 'Package.resolved'));
411
+ }
412
+ for (const loc of packageResolvedLocations) {
413
+ if (fs.existsSync(loc) && !seenPackageResolved.has(loc)) {
414
+ seenPackageResolved.add(loc);
415
+ const deps = parsePackageResolved(loc);
416
+ for (const dep of deps) {
417
+ const key = `${dep.name}@${dep.version}`;
418
+ if (!seenPackageResolved.has(key)) {
419
+ seenPackageResolved.add(key);
420
+ all.push(dep);
421
+ }
422
+ }
423
+ }
424
+ }
425
+ return all;
426
+ }
427
+ /**
428
+ * Loads all dependencies from a project directory
429
+ * BUG FIX #3: Now searches recursively for lockfiles
430
+ * P2-C FIX: When given a .xcodeproj path, uses scoped search to prevent monorepo bleeding
431
+ */
432
+ function loadAllDependencies(projectDir) {
433
+ // P2-C FIX: If given a .xcodeproj path directly, use the scoped function
434
+ if (projectDir.endsWith('.xcodeproj')) {
435
+ return loadDependenciesForProject(projectDir);
436
+ }
437
+ // Check if this directory contains a single .xcodeproj - if so, scope to it
438
+ try {
439
+ const entries = fs.readdirSync(projectDir);
440
+ const xcodeprojs = entries.filter(e => e.endsWith('.xcodeproj'));
441
+ if (xcodeprojs.length === 1) {
442
+ // Single xcodeproj in directory - use scoped loading
443
+ return loadDependenciesForProject(path.join(projectDir, xcodeprojs[0]));
444
+ }
445
+ }
446
+ catch {
447
+ // Fall through to recursive search
448
+ }
449
+ const all = [];
450
+ const seenPodfiles = new Set();
451
+ const seenPackageResolved = new Set();
452
+ // Find all Podfile.lock files recursively
453
+ const podfileLocks = findFilesRecursive(projectDir, (name) => name === 'Podfile.lock');
454
+ // Also check root explicitly (in case of permission issues during recursion)
455
+ const rootPodfileLock = path.join(projectDir, 'Podfile.lock');
456
+ if (fs.existsSync(rootPodfileLock) && !podfileLocks.includes(rootPodfileLock)) {
457
+ podfileLocks.unshift(rootPodfileLock);
458
+ }
459
+ for (const podfileLock of podfileLocks) {
460
+ const deps = parsePodfileLock(podfileLock);
461
+ for (const dep of deps) {
462
+ const key = `${dep.name}@${dep.version}`;
463
+ if (!seenPodfiles.has(key)) {
464
+ seenPodfiles.add(key);
465
+ all.push(dep);
466
+ }
467
+ }
468
+ }
469
+ // Find all Package.resolved files recursively
470
+ const packageResolvedFiles = findFilesRecursive(projectDir, (name) => name === 'Package.resolved');
471
+ // Also check common explicit locations
472
+ const explicitLocations = [
473
+ path.join(projectDir, 'Package.resolved'),
474
+ path.join(projectDir, '.swiftpm', 'Package.resolved'),
475
+ ];
476
+ for (const loc of explicitLocations) {
477
+ if (fs.existsSync(loc) && !packageResolvedFiles.includes(loc)) {
478
+ packageResolvedFiles.push(loc);
479
+ }
480
+ }
481
+ // Also search inside .xcodeproj and .xcworkspace for Package.resolved
482
+ const xcodeBundles = findFilesRecursive(projectDir, (name) => name.endsWith('.xcodeproj') || name.endsWith('.xcworkspace'));
483
+ for (const bundle of xcodeBundles) {
484
+ const nestedResolved = path.join(bundle, 'project.xcworkspace', 'xcshareddata', 'swiftpm', 'Package.resolved');
485
+ if (fs.existsSync(nestedResolved) && !packageResolvedFiles.includes(nestedResolved)) {
486
+ packageResolvedFiles.push(nestedResolved);
487
+ }
488
+ }
489
+ for (const packageResolved of packageResolvedFiles) {
490
+ const deps = parsePackageResolved(packageResolved);
491
+ for (const dep of deps) {
492
+ const key = `${dep.name}@${dep.version}`;
493
+ if (!seenPackageResolved.has(key)) {
494
+ seenPackageResolved.add(key);
495
+ all.push(dep);
496
+ }
497
+ }
498
+ }
499
+ return all;
500
+ }
501
+ //# sourceMappingURL=framework-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-detector.js","sourceRoot":"","sources":["../../src/parsers/framework-detector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,4CAOC;AAKD,0DA0DC;AAKD,oDAaC;AAKD,4DAsCC;AAKD,wDAOC;AAKD,sEAYC;AAKD,gDAaC;AAKD,sDAaC;AA2GD,gEAoEC;AAOD,kDAqFC;AA7hBD;;GAEG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,gDAAiE;AAEjE;;GAEG;AACU,QAAA,mBAAmB,GAA6C;IAC3E,gBAAgB;IAChB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;IACjD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;IACjD,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACnE,SAAS;IACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACxD,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC5D,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC7D,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC/D,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACzD,wBAAwB;IACxB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IAC3C,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE;IACpD,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IAC3C,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE;IAC/C,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;IACzC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;IACzC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;CACtC,CAAC;AAEF;;GAEG;AACU,QAAA,sBAAsB,GAA6C;IAC9E,iBAAiB;IACjB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACnD,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAChD,iBAAiB;IACjB,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACpD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACpD,YAAY;IACZ,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE;IAChD,qCAAqC;IACrC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAClD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE;IACnD,QAAQ;IACR,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACnC,SAAS;IACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACzD,WAAW;IACX,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;CACpD,CAAC;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAAgB,IAAI,GAAG,CAAC;IACrD,cAAc;IACd,QAAQ;CACT,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,gBAAgB,GAAgB,IAAI,GAAG,CAAC;IACnD,cAAc;IACd,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,wBAAwB;QACxB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9F,MAAM;QACR,CAAC;QAED,kBAAkB;QAClB,IAAI,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAE7C,4DAA4D;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACtD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEzB,kCAAkC;gBAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExC,4BAA4B;gBAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxB,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,QAAQ;wBACd,OAAO;wBACP,MAAM,EAAE,2BAAgB,CAAC,SAAS;qBACnC,CAAC,CAAC;gBACL,CAAC;gBAED,gDAAgD;gBAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxB,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,QAAQ;wBACd,OAAO;wBACP,MAAM,EAAE,2BAAgB,CAAC,SAAS;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,IAA6B;IACpE,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,qCAAqC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAA+C,CAAC;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAW,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAwC,CAAC;YAClE,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,CAAuB;oBACjD,MAAM,EAAE,2BAAgB,CAAC,GAAG;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAwC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAA+C,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAW,CAAC;YACrC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAwC,CAAC;YAClE,IAAI,GAAG,EAAE,CAAC;gBACR,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,CAAuB;oBACjD,MAAM,EAAE,2BAAgB,CAAC,GAAG;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,OAAe;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;IAC7C,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,YAA0B;IAC3D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,2BAAmB,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACpC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;QACF,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,YAA0B;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,8BAAsB,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACpC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;QACF,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAW3B;;GAEG;AACH,SAAS,wBAAwB,CAAC,GAAW,EAAE,oBAA6B;IAC1E,IAAI,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBACpE,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,GAAW,EACX,SAAoC,EACpC,UAA4B,EAAE,EAC9B,eAAuB,CAAC;IAExB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACtD,IAAI,YAAY,IAAI,QAAQ;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEvC,sDAAsD;YACtD,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,MAAM;gBAC5C,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvE,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC7B,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC/B,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACvB,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAClC,yDAAyD;oBACzD,IAAI,OAAO,CAAC,oBAAoB,IAAI,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;wBACrG,SAAS;oBACX,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,0BAA0B,CAAC,aAAqB;IAC9D,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,qCAAqC;IACrC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,aAAa,CAAC;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,mEAAmE;IACnE,MAAM,oBAAoB,GAAG;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,8BAA8B;KACpF,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,MAAM,wBAAwB,GAAG;QAC/B,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,CAAC;QAC1F,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,CAAC;QACrD,oCAAoC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,kBAAkB,CAAC;KACpE,CAAC;IAEF,qCAAqC;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5G,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,wBAAwB,CAAC,IAAI,CAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,CAAC,CACxE,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,UAAkB;IACpD,yEAAyE;IACzE,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,qDAAqD;YACrD,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,0CAA0C;IAC1C,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAEvF,6EAA6E;IAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9E,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,oBAAoB,GAAG,kBAAkB,CAC7C,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,kBAAkB,CACtC,CAAC;IAEF,uCAAuC;IACvC,MAAM,iBAAiB,GAAG;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,CAAC;KACtD,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,MAAM,YAAY,GAAG,kBAAkB,CACrC,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CACvE,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC/G,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpF,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,eAAe,IAAI,oBAAoB,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parsers module exports
3
+ */
4
+ export * from './plist-parser.js';
5
+ export * from './entitlements-parser.js';
6
+ export * from './framework-detector.js';
7
+ export * from './pbxproj-parser.js';
8
+ export * from './project-parser.js';
9
+ export * from './workspace-parser.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /**
18
+ * Parsers module exports
19
+ */
20
+ __exportStar(require("./plist-parser.js"), exports);
21
+ __exportStar(require("./entitlements-parser.js"), exports);
22
+ __exportStar(require("./framework-detector.js"), exports);
23
+ __exportStar(require("./pbxproj-parser.js"), exports);
24
+ __exportStar(require("./project-parser.js"), exports);
25
+ __exportStar(require("./workspace-parser.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,oDAAkC;AAClC,2DAAyC;AACzC,0DAAwC;AACxC,sDAAoC;AACpC,sDAAoC;AACpC,wDAAsC"}