| 225 | } |
| 226 | |
| 227 | function hasNativeDependencies() { |
| 228 | let nativeDependencies = nativeDependencyChecker.check(path.join(__dirname, 'node_modules')); |
| 229 | if (!Array.isArray(nativeDependencies) || nativeDependencies.length === 0) { |
| 230 | return false; |
| 231 | } |
| 232 | const dependencies = JSON.parse(spawn.sync('npm', ['ls', '--json', '--prod']).stdout.toString()); |
| 233 | const jsonProperties = Object.keys(flat.flatten(dependencies)); |
| 234 | nativeDependencies = nativeDependencies |
| 235 | .flatMap((item) => |
| 236 | path.dirname(item.substring(item.indexOf('node_modules') + 'node_modules'.length)).split(path.sep) |
| 237 | ) |
| 238 | .filter((item) => item.length > 0) |
| 239 | .filter((item) => !item.includes('zeromq') && !item.includes('canvas') && !item.includes('keytar')) // Known native modules |
| 240 | .filter( |
| 241 | (item) => |
| 242 | jsonProperties.findIndex((flattenedDependency) => |
| 243 | flattenedDependency.endsWith(`dependencies.${item}.version`) |
| 244 | ) >= 0 |
| 245 | ); |
| 246 | if (nativeDependencies.length > 0) { |
| 247 | console.error('Native dependencies detected', nativeDependencies); |
| 248 | return true; |
| 249 | } |
| 250 | return false; |
| 251 | } |
| 252 | |
| 253 | async function generateTelemetry() { |
| 254 | const generator = await import('./out/telemetryGenerator.node.js'); |