mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-20 05:29:17 +00:00

* feat: npm package registry API * refactor: move package registry files * refactor: move jsr and npm api to a new package * ci: add verify-package-export * test: implement tests for npm package validation as kunkun extension * chore: add missing dep for package-registry pkg * feat: make provenance an optional input for npm validation function * ci: add verify-package-export as dev dep to 2 packages that uses it * feat: add rekor log API, and return commit from jsr & npm package in validation function * feat: return github repo info from validation function of jsr and npm * feat: extend ExtPublishMetadata to include optional GitHub repository details * fix: eslint for ui package * refactor: format desktop * fix: eslint errors in desktop * format: all code * ci: add lint to CI * feat: add more info to validation function returned from package-registry npm jsr * pnpm lock * feat: add 2 more variables to supabase extension metadata model * format * feat: add provenance card * feat: add workflow path to ExtPublishMetadata and jsr/npm validation * update provenance * feat: make store extension and provenance more responsive * chore: add globals to ui package * fix: remove unnecessary any to fix eslint * fix: svg sanitize * chore: add @typescript-eslint/eslint-plugin to ui package to fix eslint * fix: update eslint dep to fix error * fix: try fixing eslint * fix: update eslint configuration for improved compatibility * chore: add globals package and update README for Discord invite * fix: update eslint rules and upgrade typescript-eslint dependency - Disabled additional eslint rules to resolve errors: - @typescript-eslint/no-unused-expressions - svelte/no-inner-declarations - Upgraded typescript-eslint from version 8.19.1 to 8.20.0 for improved compatibility. * update pnpm lock --------- Co-authored-by: Huakun Shen <huaukun.shen@huakunshen.com>
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/**
|
|
* TODO: move this module to another folder
|
|
*/
|
|
import { Octokit } from "@octokit/rest"
|
|
|
|
/**
|
|
* Check if a user is a public member of a GitHub organization
|
|
* @param orgName - The name of the GitHub organization
|
|
* @param username - The username of the user
|
|
* @returns A promise that resolves to a boolean indicating if the user is a public member of the organization
|
|
*/
|
|
export function userIsPublicMemberOfGitHubOrg(orgName: string, username: string): Promise<boolean> {
|
|
const octokit = new Octokit()
|
|
return octokit.orgs
|
|
.checkPublicMembershipForUser({ org: orgName, username })
|
|
.then(() => true)
|
|
.catch(() => false)
|
|
}
|
|
|
|
/**
|
|
* Only works if user grants read:org scope with the org when login
|
|
* @param orgName
|
|
* @param username
|
|
* @param githubToken
|
|
*/
|
|
export function authenticatedUserIsMemberOfGitHubOrg(
|
|
orgName: string,
|
|
githubToken: string
|
|
): Promise<boolean> {
|
|
const octokit = new Octokit({ auth: githubToken })
|
|
return octokit.orgs.listForAuthenticatedUser().then((res) => {
|
|
return res.data.some((org) => org.login === orgName)
|
|
})
|
|
}
|
|
|
|
export function parseGitHubRepoFromUri(uri: string): {
|
|
owner: string
|
|
repo: string
|
|
} {
|
|
// check regex
|
|
const regex = /https?:\/\/github\.com\/([^\/]+)\/([^\/]+)/
|
|
const match = uri.match(regex)
|
|
if (!match) {
|
|
throw new Error("Invalid GitHub repository URI")
|
|
}
|
|
const [, owner, repo] = match
|
|
return { owner, repo }
|
|
}
|