Ctrl K
ComunidadGuías…

scripts/star-capgo-repos.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env npx ts-node

/**
 * Script to star all Cap-go repositories using the GitHub API
 *
 * Usage:
 *   GITHUB_TOKEN=your_token npx ts-node scripts/star-capgo-repos.ts
 *
 * Or set GITHUB_TOKEN in your environment
 */
// const a = Array.from(document.querySelector('#plugins-grid').childNodes)
// b = a.filter(a => Array.from(a.childNodes).length > 0)
// const c = b.map(x => Array.from(Array.from(Array.from(x.childNodes).find(x => x.localName == 'div').childNodes).find(x => x.className == 'flex gap-2').childNodes).find(x => x.rel == 'noopener noreferrer').href )

const CAPGO_REPOS = [
  "https://github.com/Cap-go/capacitor-updater/",
  "https://github.com/Cap-go/capacitor-inappbrowser/",
  "https://github.com/Cap-go/capacitor-native-biometric/",
  "https://github.com/RevenueCat/purchases-capacitor/",
  "https://github.com/Cap-go/capacitor-social-login/",
  "https://github.com/Cap-go/capacitor-navigation-bar/",
  "https://github.com/Cap-go/capacitor-shake/",
  "https://github.com/Cap-go/capacitor-mute/",
  "https://github.com/Cap-go/capacitor-native-audio/",
  "https://github.com/Cap-go/capacitor-twilio-voice/",
  "https://github.com/Cap-go/capacitor-home-indicator/",
  "https://github.com/Cap-go/capacitor-nativegeocoder/",
  "https://github.com/Cap-go/capacitor-camera-preview/",
  "https://github.com/Cap-go/capacitor-native-purchases/",
  "https://github.com/Cap-go/capacitor-flash/",
  "https://github.com/Cap-go/capacitor-autofill-save-password/",
  "https://github.com/Cap-go/capacitor-screen-recorder/",
  "https://github.com/Cap-go/capacitor-native-market/",
  "https://github.com/Cap-go/capacitor-crisp/",
  "https://github.com/Cap-go/capacitor-uploader/",
  "https://github.com/Cap-go/capacitor-health/",
  "https://github.com/Cap-go/capacitor-data-storage-sqlite/",
  "https://github.com/Cap-go/capacitor-document-scanner/",
  "https://github.com/Cap-go/capacitor-persistent-account/",
  "https://github.com/Cap-go/capacitor-android-usagestatsmanager/",
  "https://github.com/Cap-go/capacitor-downloader/",
  "https://github.com/Cap-go/capacitor-alarm/",
  "https://github.com/Cap-go/capacitor-audio-recorder/",
  "https://github.com/Cap-go/capacitor-video-player/",
  "https://github.com/Cap-go/capacitor-env/",
  "https://github.com/Cap-go/capacitor-is-root/",
  "https://github.com/Cap-go/capacitor-photo-library/",
  "https://github.com/Cap-go/capacitor-sim/",
  "https://github.com/Cap-go/capacitor-pedometer/",
  "https://github.com/Cap-go/capacitor-android-inline-install/",
  "https://github.com/Cap-go/capacitor-nfc/",
  "https://github.com/Cap-go/capacitor-pay/",
  "https://github.com/Cap-go/capacitor-llm/",
  "https://github.com/Cap-go/capacitor-media-session/",
  "https://github.com/Cap-go/capacitor-launch-navigator/",
  "https://github.com/Cap-go/capacitor-wifi/",
  "https://github.com/Cap-go/capacitor-jw-player/",
  "https://github.com/Cap-go/capacitor-volume-buttons/",
  "https://github.com/Cap-go/capacitor-mux-player/",
  "https://github.com/Cap-go/capacitor-realtimekit/",
  "https://github.com/Cap-go/capacitor-admob/",
  "https://github.com/Cap-go/capacitor-accelerometer/",
  "https://github.com/Cap-go/capacitor-in-app-review/",
  "https://github.com/Cap-go/capacitor-screen-orientation/",
  "https://github.com/Cap-go/capacitor-wechat/",
  "https://github.com/Cap-go/capacitor-speech-recognition/",
  "https://github.com/Cap-go/capacitor-share-target/",
  "https://github.com/Cap-go/capacitor-fast-sql/",
  "https://github.com/Cap-go/capacitor-textinteraction/",
  "https://github.com/Cap-go/capacitor-webview-guardian/",
  "https://github.com/Cap-go/capacitor-barometer/",
  "https://github.com/Cap-go/capacitor-gtm/",
  "https://github.com/Cap-go/capacitor-speech-synthesis/",
  "https://github.com/Cap-go/capacitor-pdf-generator/",
  "https://github.com/Cap-go/capacitor-zip/",
  "https://github.com/Cap-go/capacitor-youtube-player/",
  "https://github.com/Cap-go/capacitor-compass/",
  "https://github.com/Cap-go/capacitor-contacts/",
  "https://github.com/Cap-go/capacitor-file/",
  "https://github.com/Cap-go/capacitor-file-compressor/",
  "https://github.com/Cap-go/capacitor-ibeacon/",
  "https://github.com/Cap-go/capacitor-printer/",
  "https://github.com/Cap-go/capacitor-android-age-signals/",
  "https://github.com/Cap-go/capacitor-android-kiosk/",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/analytics",
  "https://github.com/Cap-go/capacitor-bluetooth-low-energy/",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/authentication",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/storage",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/crashlytics",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/messaging",
  "https://github.com/Cap-go/capacitor-plus/",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/app",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/performance",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/firestore",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/functions",
  "https://github.com/Cap-go/capacitor-plus/",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/app-check",
  "https://github.com/Cap-go/capacitor-firebase/tree/main/packages/remote-config",
  "https://github.com/Cap-go/capacitor-plus/",
  "https://github.com/Cap-go/capacitor-plus/",
  "https://github.com/Cap-go/capacitor-keep-awake/",
  "https://github.com/Cap-go/capacitor-file-picker/",
  "https://github.com/Cap-go/capacitor-ffmpeg/",
  "https://github.com/Cap-go/capacitor-streamcall/",
  "https://github.com/Cap-go/capacitor-ricoh360-camera-plugin/",
  "https://github.com/Cap-go/capacitor-appinsights/",
  "https://github.com/Cap-go/capacitor-audiosession/",
  "https://github.com/Cap-go/capacitor-background-geolocation/",
  "https://github.com/Cap-go/capacitor-live-reload/",
  "https://github.com/Cap-go/capacitor-watch/",
  "https://github.com/Cap-go/capacitor-brightness/",
  "https://github.com/Cap-go/capacitor-light-sensor/",
  "https://github.com/Cap-go/capacitor-video-thumbnails/",
  "https://github.com/Cap-go/capacitor-intent-launcher/"
]

function parseGitHubUrl(url: string): { owner: string, repo: string } | null {
  // Handle URLs like:
  // https://github.com/Cap-go/capacitor-updater/
  // https://github.com/Cap-go/capacitor-firebase/tree/main/packages/analytics
  const match = url.match(/github\.com\/([^\/]+)\/([^\/]+)/)
  if (!match) return null
  return { owner: match[1], repo: match[2] }
}

async function starRepo(token: string, repoUrl: string): Promise<{ success: boolean, status: number, message: string, repo: string }> {
  const parsed = parseGitHubUrl(repoUrl)
  if (!parsed) {
    return { success: false, status: 0, message: 'Invalid GitHub URL', repo: repoUrl }
  }
  const { owner, repo: repoName } = parsed
  const url = `https://api.github.com/user/starred/${owner}/${repoName}`

  try {
    const response = await fetch(url, {
      method: 'PUT',
      headers: {
        'Accept': 'application/vnd.github+json',
        'Authorization': `Bearer ${token}`,
        'X-GitHub-Api-Version': '2022-11-28',
        'Content-Length': '0',
      },
    })

    const repoDisplay = `${owner}/${repoName}`
    if (response.status === 204) {
      return { success: true, status: 204, message: 'Starred successfully', repo: repoDisplay }
    }
    else if (response.status === 304) {
      return { success: true, status: 304, message: 'Already starred', repo: repoDisplay }
    }
    else {
      const text = await response.text()
      return { success: false, status: response.status, message: text, repo: repoDisplay }
    }
  }
  catch (error) {
    return { success: false, status: 0, message: String(error), repo: repoUrl }
  }
}

async function main() {
  const token = process.env.GITHUB_PRIVATE_TOKEN

  if (!token) {
    console.error('Error: GITHUB_TOKEN environment variable is required')
    console.error('Usage: GITHUB_TOKEN=your_token npx ts-node scripts/star-capgo-repos.ts')
    process.exit(1)
  }

  console.log(`Starring ${CAPGO_REPOS.length} repositories...\n`)
  let successCount = 0
  let failCount = 0

  for (const repo of CAPGO_REPOS) {
    const result = await starRepo(token, repo)

    if (result.success) {
      console.log(`✓ ${repo} - ${result.message}`)
      successCount++
    }
    else {
      console.log(`✗ ${repo} - Failed (${result.status}): ${result.message}`)
      failCount++
    }

    // Small delay to avoid rate limiting
    await new Promise(resolve => setTimeout(resolve, 100))
  }

  console.log(`\nDone! Starred: ${successCount}, Failed: ${failCount}`)
}

main()